經常在Windows環境下工作的同學在初次使用Linux操作系統的時候可能有種不知所措的感覺。 Linux操作系統理念是一切皆文件。因此當我們登入Linux操作系統內部的時候看到的是各種目錄和文件。特別是進入非桌面版時,看到的隻是一個命令行提示符。圖1 Linux交互界面這就給大傢造成瞭很大的學習障礙。其實如果登錄桌面版(比如Ubuntu)會發現其實跟Windows還是很像的。學習門檻也低很多。圖2 圖形界面目錄結構桌面版隻是對底層做瞭一些封裝,本質上來說,Linux操作系統中一切皆文件。不僅僅存儲數據的磁盤是文件,其它設備也是文件。操作系統內部的信息也是以文件的形式呈現的,比如CPU信息、內存信息和進程信息等等。因此,如果想學習Linux操作系統,非常有比較瞭解一下整個文件系統。其實有一個專門的文檔來介紹Linux的目錄結構,這個文檔名為文件系統層次標準(Filesystem Hierarchy Standard,簡稱FHS)。但是這個文檔非常長, 而且在Linux的目錄結構中有些目錄並不在該文檔中,因此本文簡要介紹一下Linux的核心目錄。/ – 根目錄首先我們介紹一下Linux下的根目錄。Linux的目錄結構就像一棵倒著的大樹,最底層是樹幹,然後是分支,層層細分。而根目錄是Linux最底層的目錄,就像一棵大樹的樹幹一樣。任何內容都位於根目錄之下,根目錄通過一個路徑符號/表示。如果非要找個類比的話,可以將根目錄理解為Windows下面的C:\目錄。但是嚴格來說並不一樣,Linux下的”/”是所有內容(包括文件目錄、設備和文件等)的根,而Windows下的C:\並不是,因為如果有多個磁盤或者多個分區,那Windows下可能還有D:\或者E:\。我們可以通過執行命令cd /將當前工作路徑切換到根目錄。並通過命令tree -L 1顯示根目錄的所有下一級目錄。具體如圖3所示。本例中隻顯示瞭一級子目錄,當然也可以通過-L 2顯示二級子目錄,但結果可能會占滿整個屏幕。圖3 根目錄示例/bin – 用戶基礎二進制文件目錄目錄/bin是根目錄的一級子目錄。在該目錄中包含著最為基礎的用戶二進制文件,也就是應用程序。這個目錄非常像Windows下的Programs目錄。並非所有的應用程序都存儲在這個目錄下面,有些不是特別基礎的程序會存儲在/usr/bin目錄下面。比如Chrome瀏覽器等,或者用戶自己安裝的一些程序通常會在/usr/bin下面。而系統應用程序則通常會在該目錄下面,比如ls、mkdir和cp等等。如果你使用的桌面版的操作系統,可以通過GUI看到該目錄下的內容。下面這張圖是一個具體的例子。圖4 二進制目錄/boot – 靜態啟動文件在目錄/boot下面包含的文件是用於啟動操作系統的文件。比如GRUB boot loader文件和操作系統內核等。但是boot loader的配置文件並沒有在這裡,而是在/etc目錄中。/cdrom – 光盤安裝點目錄/cdrom並不是FHS標準的一部分,但是我們在絕大多數發行版中都可以看到。該目錄是光盤的臨時掛載點。/dev – 設備文件在Linux下面,設備也是一個文件,比如磁盤、優盤或者光盤等。包括無線網卡、攝像頭和串口等都是一個文件。而通常這些文件都是在/dev目錄下面,大傢可以切換到該目錄下看看具體的內容。圖5 設備目錄其中圖是/dev目錄的一個局部截圖。在該目錄下面最常見的可能就是/dev/sda這種文件,該文件表示一個SCSI磁盤。處理實體設備外,在該目錄下面還有很多偽設備。比如/dev/random表示一個產生隨機數的設備,/dev/loop0則是一個將本地文件映射為磁盤的虛擬設備。這些偽設備有的時候非常用於,我們經常使用這些設備做一些測試。圖6 GUI目錄/etc – 配置文件操作系統和應用程序的配置文件通常都統一存儲在一個目錄下面,這個目錄就是/etc。很多配置文件都已文本文件的形式存儲在這裡。我們可以通過文本編輯器修改配置項。比如網絡的IP地址、Nginx的配置和系統日志的配置等等都可以在這裡找到。/home –主目錄這個目錄稱為主目錄。在Linux操作系統下面通常每個用戶都有一個自己的目錄,該目錄就在/home下面。例如本例中有一個名為zhangsn的用戶,該用戶的主目錄在/home下如圖7所示。用戶的主目錄下面包含這數據文件和用戶相關的配置文件。通常一個用戶隻能修改其目錄下的文件,隻有獲得授權的情況下才能訪問其它文件。圖7 zhangsn的主目錄/lib – 基礎共享庫在/lib目錄中存儲的是/bin和/sbin中二進制文件(應用程序)需要的庫文件。在/usr/bin下的應用程序依賴的庫通常在/usr/lib目錄下面。/lost+found – 可恢復的文件每一個文件系統都有一個lost+found目錄。如果文件系統崩潰,在系統下次啟動的時候會進行數據檢查。在檢查的過程中如果發現有數據沖突的文件就會將其放入該目錄中。這樣,你就可以試著手動恢復該文件。/media – Removable Media在目錄/media下面包含的子目錄是一些可插拔設備的掛載點。當一些可插拔設備插入電腦時,在該目錄下會自動創建子目錄,並進行掛載。/mnt – 臨時掛載點目錄該目錄通常是空的。主要用於臨時掛載一些外部文件系統。比如有多個數據磁盤的情況下,會將格式化的磁盤掛載到該目錄下面。mnt字符是mount的縮寫,也就是掛載的意思。/opt – 自選軟件包(Optional Packages)自行安裝的非常規軟件通常會安裝在該目錄。/proc – Kernel & Process Files該目錄也是一個虛擬目錄,也就是並不是存儲文件數據的目錄。這個目錄中存儲的文件通常是用來獲取操作系統內核內部信息或者進程內部信息的。圖8 proc目錄比如每個進程在該目錄下都有一個子目錄,而字母的名字就是進程ID。通過cat命令對該目錄下的文件進行讀取,可以獲取進程的詳細信息。例如我們進入目錄/proc/258下面,這個是進程ID為258的進程的信息,通過ls命令可以看到如下內容。圖8 進程詳細信息/root – root主目錄目錄/root是root用戶的主目錄。root用戶的主目錄並不是在/home下面,而是在根目錄下面。這一點需要註意。/run – 應用程序狀態文件這個目錄是比較新的目錄,用於應用程序存儲經常變化的文件,比如文件鎖、進程ID或者套接字等等。/sbin – 系統管理二進制文件該目錄與/bin目錄類似,用於存儲二進制文件。與/bin目錄不同的地方是這個目錄存儲的是用於系統管理的二進制文件,比如磁盤格式化(mkfs)、磁盤分區(fdisk)和網絡配置(ifconfig)等命令。圖9 系統命令/selinux – SELinux虛擬文件系統如果你的Linux發行版使用SELinux作為安全管理,那麼該目錄包含著SELinux使用的相關文件。/srv – 服務數據該目錄存儲具體服務提供的數據。通常該目錄是空的。這個目錄中的數據通常是提供給外部的,比如Web網站存儲的用戶信息。這裡需要註意與/var和/tmp的區別,前者是提供給外部用戶的,而兩者則是應用自己使用的,而且/tmp中的數據重啟後會丟失。/tmp – 臨時文件應用程序產生的臨時數據通常存儲在該目錄中。該目錄有一個特點,就是系統重啟後目錄中的數據將被清理。/usr – User Binaries & Read-Only Data與系統使用的應用程序和文件不同,在/usr目錄下存儲的是用戶使用的應用程序的文件。比如/bin下面存儲的系統二進制文件,而/usr/bin下面則是用戶使用的二進制文件。/lib下面存儲的系統庫文件,而/usr/lib下面存儲的是用於應用程序使用的庫文件。/var – 變量數據文件/var目錄是/usr目錄對應的可寫目錄,在/usr目錄中的內容隻讀的,而/var則是可寫的。日志文件和正常操作中的一些寫入操作通常會寫入/var目錄。例如,日志文件通常存儲在/var/log中。好瞭,關於Linux目錄的內容就介紹到這裡,相信通過本次介紹,大傢對Linux的目錄和文件會有更加深刻和細致的瞭解。在以後的工作中也能更加合理的使用這些目錄瞭。
本文出自快速备案,转载时请注明出处及相应链接。