Linux系統目錄結構
包括了幾近所的文件目錄。進入的最簡單方法是:cd /。注意與根用戶的區分。根用戶是指系統管理員root,又為超級用戶。
這個目錄,包括了在引導進程中所必須的文件,引導程序的相干文件(例如grub,lilo和相應的配置文件和Linux操作系統內核相干文件(例如vmlinuz等1般都寄存在這里。在最開始的啟動階段,通過引導程序將內核加載到內存,完成內核的啟動(這個時候,虛擬文件系統還不存在,加載的內核雖然是從硬盤讀取的,但是沒經過Linux的虛擬文件系統,這是比較底層的東西來實現的。然后內核自己創建好虛擬文件系統,并且從虛擬文件系統的其他子目錄中(例如/sbin 和 /etc加載需要在開機啟動的其他程序或服務或特定的動作(部份可以由用戶自己在相應的目錄中修改相應的文件來配制。如果我們的機器中包括多個操作系統,那末可以通過修改這個目錄中的某個配置文件(例如grub.conf來調劑啟動的默許操作系統,系統啟動的擇菜單,和啟動延遲等參數。
寄存大多觸及系統管理的命令(例如引導系統的init程序,是超級權限用戶root的可履行命令寄存地,普通用戶無權限履行這個目錄下的命令(但是時普通用戶也可能會用到。這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin等目錄是相似的,我們要記住,凡是目錄sbin中包括的都是root權限才能履行的,這樣就好了。
與/sbin目錄不同的是該目錄下的命令root用戶與普通用戶都可使用。比如ls、cp、mkdir等命令;類似的目錄還/usr/bin,/usr/local/bin等等。這個目錄中的文件都是可履行的、普通用戶都可使用的命令。作為基礎系統所需要的最基礎的命令就是放在這里。跟/usr/bin目錄像比,對系統來講這個目錄是比不可少的,由于即便只有包括有/的分區被掛載,也需要這些命令可被履行。這個目錄包括的程序多是啟動程序所依賴的。
注:在centos7中,根目錄下的bin目錄只是個指向/usr/bin的軟連接。
此目錄下包括系統啟動和在根文件系統運行命令所需要的內核模塊和同享庫。類似于windows系統里的動態鏈接庫(DLL)文件。理說,這里寄存的文件應當是/bin目錄下程序所需要的庫文件的寄存地,也不排除1些例外的情況。類似的目錄還/usr/lib,/usr/local/lib等等。
注:在centos7中lib與lib64跟別連接到/usr/lib和/usr/lib64文件,這兩個文件的內容有所不同。
在Linux中裝備都是以文件情勢出現,這里的裝備可以是硬盤,鍵盤,鼠標,網卡,終端,等裝備,通過訪問這些文件可以訪問到相應的裝備。裝備文件可使用mknod命令來創建,具體參見相應的命令;而為了將對這些裝備文件的訪問轉化為對裝備的訪問,需要向相應的裝備提供裝備驅動模塊(1般將裝備驅動編譯以后,生成的結果是1個*.ko類型的2進制文件,在內核啟動以后,再通過insmod等命令加載相應的裝備驅動以后,我們就能夠通過裝備文件來訪問裝備了)。1般來講,想要Linux系統支持某個裝備,只要個東西:相應的硬件裝備,支持硬件的驅動模塊,和相應的裝備文件。
在Linux機器上,用戶主目錄通常直接或間接地置在此目錄下。其結構通常由本地機的管理員來決定。通常而言,系統的每一個用戶都自己的主目錄,目錄以用戶名作為名字寄存在/home下面(例如user1用戶,其主目錄的名字為/home/user1。該目錄中保存了用戶的絕大多數文件(用戶自己的配置文件,定制文件,文檔,數據等),root用戶除外(參見后面的/root目錄。由于這個目錄包括了用戶實際的數據,通常系統管理員為這個目錄單獨掛載1個獨立的磁盤分區,這樣這個目錄的文件系統格式便可能和其他目錄不1樣了(雖然表面上看,這個目錄還是屬于根目錄的1棵子樹上),有益于數據的保護。
系統管理員(就是root用戶或超級用戶)的主目錄比較特殊,不寄存在/home中,而是直接放在/root目錄下了,緣由是如果系統只掛載/目錄,則要是root的主目錄放在/home下,則會造成root用戶沒法訪問其主目錄。
系統和程序1般都可以通過修改相應的配置文件,來進行配置。例如,要配置系統開機的時候啟動那些程序,配置某個程序啟動的時候顯示甚么樣的風格等等。通常這些配置文件都集中寄存在/etc目錄中,所以想要配置甚么東西的話,可以在/etc下面尋覓我們可能需要修改的文件。1些大型套件,如X11,在 /etc 下它們自己的子目錄。系統配置文件可以放在這里或在 /usr/etc。不過所程序總是在 /etc 目錄下查找所需的配置文件,你也能夠將這些文件鏈接到目錄 /usr/etc。另外,還1個需要注意的常見現象就是,當某個程序在某個用戶下運行的時候,可能會在該用戶的家目錄中生成1個配置文件(1般這個文件最開始就是/etc下相應配置文件的拷貝,寄存相應于“當前用戶”的配置,這樣當前用戶可以通過配置這個家目錄的配置文件,來改變程序的行動,并且這個行動只是該用戶特的。緣由就是:1般來講1個程序啟動,如果需要讀取1些配置文件的話,它會首先讀取當前用戶家目錄的配置文件,如果存在就使用;如果不存在它就到/etc下讀取全局的配置文件進而啟動程序。就是這個配置文件不自動生成,我們手動在自己的家目錄中創建1個文件的話,也有許多程序會首先讀取到這個家目錄的文件并且以它的配置作為啟動的選項(例如我們可以在家目錄中創建vim程序的配置文件.vimrc,來配置自己的vim程序。
這個目錄對系統來講也是1個非常重要的目錄,其地位類似Windows上面的”Program Files”目錄。在之前/usr目錄像當于現在的/home目錄,所以現在對/usr目錄的1個叫法為:User System Resource。安裝程序的時候,默許就是安裝在此文件內部某個子文件夾內。輸入命令后系統默許履行/usr/bin下的程序(固然,條件是這個目錄的路徑已被添加到了系統的環境變量中。此目錄通常也會掛載1個獨立的磁盤分區,它應保存同享只讀類文件,這樣它可以被運行Linux的不同主機掛載。
這個目錄功能類似/lib目錄,這里寄存的文件應當是/bin目錄下程序所需要的庫文件的寄存地,也不排除1些例外的情況。
此目錄像當于根文件系統下的對應目錄(/bin,非啟動系統,非修復系統和非本地安裝的程序1般都放在此目錄下。
此目錄像當于根文件系統下的對應目錄(/sbin,保存系統管理程序的2進制文件,并且這些文件不是系統啟動或文件系統掛載 /usr 目錄或修復系統所必須的。
在此目錄下不同的子目錄中保存了同1個操作系統在不同構架下工作時特定利用程序的同享數據(例如程敘文檔信息)。使用者可以找到通常放在 /usr/doc 或 /usr/lib 或 /usr/man 目錄下的這些類似數據。
linux下開發和編譯利用程序所需要的頭文件1般都寄存在這里,通過頭文件來使用某些庫函數。默許來講這個路徑被添加到了環境變量中,這樣編譯開發程序的時候編譯器會自動搜索這個路徑,從中找到你的程序中可能包括的頭文件。
當我們下載1個程序源代碼,編譯并且安裝的時候,如果不特別指定安裝的程序路徑,那末默許會將程序相干的文件安裝到這個目錄的對應目錄下。例如,安裝的程序可履行文件被安裝(安裝實質就是復制到了/usr/local/bin下面,此程序(可履行文件所需要依賴的庫文件被安裝到了/usr/local/lib目錄下,被安裝的軟件如果是某個開發庫(例如Qt,Gtk等那末相應的頭文件可能就被安裝到了/usr/local/include中等等。也就是說,這個目錄寄存的內容,1般都是我們后來自己安裝的軟件的默許路徑,如果擇了這個默許路徑作為軟件的安裝路徑,被安裝的軟件的所文件都限制在這個目錄中,其中的子目錄就相應于根目錄的子目錄。
這是1個特殊的目錄,它一樣是1個虛擬文件系統。通過這個目錄下的各個文件,可以查看系統的內核信息。
1些自定義軟件包或第3方工具,就能夠安裝在這里。
這個目錄1般是用于寄存掛載貯存裝備的掛載目錄的,比如磁盤,光驅,網絡文件系統等,當我們需要掛載某個磁盤裝備的時候,可以把磁盤裝備掛載到這個目錄上去,這樣我們可以直接通過訪問這個目錄來訪問那個磁盤了。可以在/mnt目錄下面多建立幾個子目錄,掛載的時候掛載到這些子目錄上面,也能夠在任意位置設置掛在點,但是不建議這么做。
掛載的媒體裝備目錄,1般可移動裝備掛載到這里,例如cdrom,loppy和cdrecord等。
此目錄下文件的大小可能會改變,如緩沖文件,日志文件,緩存文件,等1般都寄存在這里。
該目錄寄存系統中的1些臨時文件,文件可能會被系統自動清空。的系統直接把tmpfs類型的文件系統掛載到這個目錄上,tmpfs文件系統由Linux內核支持,在這個文件系統中的數據,實際上是內存中的,由于內存的數據斷電易失,當系統重新啟動的時候我們就會發現這個目錄被清空了。
當系統崩潰的時候,在系統修復進程中需要恢復的文件,可能就會在這里被找到了,這個目錄1般為空。
以上目錄,是最多見的重要目錄。其中,有些目錄初學者容易混淆,這里簡單辨別1下:
/bin,/sbin與/usr/bin,/usr/sbin:
/bin1般寄存對用戶和系統來講“必須”的程序(2進制文件)。
/sbin1般寄存用于系統管理的“必須”的程序(2進制文件,1般普通用戶不會使用,根用戶使用)。
/usr/bin1般寄存的只是對用戶和系統來講“不是必須的”程序(2進制文件)。
/usr/sbin1般寄存用于系統管理的系統管理的不是必須的程序(2進制文件)。
/lib與/usr/lib:
/lib和/usr/lib的區分類似/bin,/sbin與/usr/bin,/usr/sbin。
/lib1般寄存對用戶和系統來講“必須”的庫(2進制文件)。
/usr/lib1般寄存的只是對用戶和系統來講“不是必須的”庫(2進制文件)。上一篇 JQuery小練習