介紹 Linux 文件系統:這些目錄你都認識嗎?

2019-08-26     夏日卿塵



Linux 系統大家一定不陌生,學習工作中肯定會和 Linux 打交道。不過談及 Linux,給人的第一印象可能就是黑乎乎的命令行,亂七八糟的文件夾,甚至安裝軟體都不知道是怎麼安裝上去的。

其實這些都是用慣了 Windows 的後遺症,多用用 Linux 就會發現這玩意還是挺好用的,關鍵還能 DIY,非常裝逼:



言歸正傳,本文介紹一下 Linux 的文件系統(File System),介紹一下這些文件夾都是幹什麼的。

上圖是 Linux 文件系統的一個整體結構,無論是什麼 Linux 發行版,根目錄/基本上就是這些文件。不要害怕這麼多文件夾,大部分都不需要你操心,只要大概了解它們是幹啥的就行了。

/bin 和 /sbin

bin是Binary的縮寫,存放著可執行文件或可執行文件的連結(類似快捷方式),如下圖:



你可以看到cp,chmod,cat等常用命令都在這裡。注意不要被圖標上的 TXT 字樣誤導了,Linux 不按後綴識別文件類型,/bin目錄中的文件都是可執行的二進位文件,而不是文本文件。

與/bin類似的是/sbin目錄,System Binary 的縮寫,這裡存放的命令可以對系統配置進行操作。普通用戶可能可以使用這裡的命令查看某些系統狀態,但是如果想更改配置,就需要sudo授權或者切換成超級用戶。



可以看到一些熟悉的命令,比如ifconfig,iptables。普通用戶可以使用ifconfig查看網卡狀態,但是想配置網卡信息,就需要授權了。

/boot



這裡存放系統啟動需要的文件,你可以看到grub文件夾,它是常見的開機引導程序。我們不應該亂動這裡的文件。

/dev

dev是device的縮寫,這裡存放著所有的設備文件。在 Linux 中,所有東西都是以文件的形式存在的,包括硬體設備。

比如說,sda,sdb就是我電腦上的兩塊硬碟,後面的數字是硬碟分區:



滑鼠、鍵盤等等設備也都可以在這裡找到。

/etc

這個目錄經常使用,存放很多程序的配置信息,比如包管理工具 apt:



在/etc/apt中就存放著對應的配置,比如說鏡像列表(我配置的阿里雲鏡像):



如果你要修改一些系統程序的配置,十有八九要到etc目錄下尋找。

/lib

lib是 Library 的縮寫,包含 bin 和 sbin 中可執行文件的依賴,類似於 Windows 系統中存放dll文件的庫。

也可能出現lib32或lib64這樣的目錄,和lib差不多,只是作業系統位數不同而已。

/media

這裡會有一個以你用戶名命名的文件夾,裡面是自動掛載的設備,比如 U 盤,移動硬碟,網絡設備等。

比如說我在電腦上插入一個 U 盤,系統會把 U 盤自動給我掛載到/media/fdl這個文件夾里(我的用戶名是 fdl),如果我要訪問 U 盤的內容,就可以在那裡找到。

/mnt

這也是和設備掛載相關的一個文件夾,一般是空文件夾。media文件夾是系統自動掛載設備的地方,這裡是你手動掛載設備的地方。

比如說,剛才我們在dev中看到了一大堆設備,你想打開某些設備看看裡面的內容,就可以通過命令把設備掛載到mnt目錄進行操作。

不過一般來說,現在的作業系統已經很聰明了,像掛載設備的操作幾乎都不用你手動做,系統應該幫你自動掛載到media目錄了。

/opt

opt是 Option 的縮寫,這個文件夾的使用比較隨意,一般來說我們自己在瀏覽器上下載的軟體,安裝在這裡比較好。當然,包管理工具下載的軟體也可能被存放在這裡。



比如我在這裡存放了 Chrome 瀏覽器(google),網易雲音樂(netease),CLion IDE 等等軟體。

/proc

proc是process的縮寫,這裡存放的是全部正在運行程序的狀態信息



你會發現/proc裡面有一大堆數字命名的文件夾,這個數字其實是 Process ID(PID),文件夾里又有很多文件。

前面說過,Linux 中一切都以文件形式儲存,類似/dev,這裡的文件也不是真正的文件,而是程序和內核交流的一些信息。比如說我們可以查看當前作業系統的版本,或者查看 CPU 的狀態:



如果你需要調試應用程式,proc目錄中的信息也許會幫上忙。

/root

這是超級用戶的家目錄,普通用戶需要授權才能訪問。

區別一下 root 用戶和根目錄的區別哈,root 用戶就是 Linux 系統的超級用戶(Super User),而根目錄是指 / 目錄,整個文件系統的「根部」。

/run 和 /sys

用來存儲某些程序的運行時信息和系統需要的一些信息。比如說下面這個路徑有一個名為 brightness 的文件:

sudo vim /sys/devices/pci0000:00/
0000:00:02.0/drm/card0/card0-eDP-1/
intel_backlight/brightness

裡面存儲著一個數字,是你的顯卡亮度,你修改這個數字,螢幕亮度就會隨之變化。

需要注意的是,這兩個位置的數據都存儲在內存中,所以一旦重啟,/run和/sys目錄的信息就會丟失,所以不要試圖在這裡存放任何文件。

/srv

srv是service的縮寫,主要用來存放服務數據。

對於桌面版 Linux 系統,這個文件夾一般是空的,但是對於 Linux 伺服器,Web 服務或者 FTP 文件服務的資源可以存放在這裡。

/tmp

tmp是temporary的縮寫,存儲一些程序的臨時文件

臨時文件可能起到很重要的作用。比如經常聽說某同學的 Word 文檔崩潰了,好不容易寫的東西全沒了,Linux 的很多文本編輯器都會在/tmp放一份當前文本的 copy 作為臨時文件,如果你的編輯器意外崩潰,還有機會在/tmp找一找臨時文件搶救一下。



比如上圖的VSCode Crashes應該就是 VScode 編輯器存放臨時文件的地方。

當然,tmp文件夾在系統重啟之後會自動被清空,如果沒有被清空,說明系統刪除某些文件失敗,也許需要你手動刪除一下。

/usr

usr是 Universal System Resource 的縮寫,這裡存放的是一些非系統必須的資源,比如用戶安裝的應用程式。



/usr和/usr/local目錄中又含有bin和sbin目錄,也是存放可執行文件(命令),但和根目錄的bin和sbin不同的是,這裡大都是用戶使用的工具,而非系統必須使用的。

比如說/usr/bin中含有我通過包管理工具安裝的應用程式 Chrome 瀏覽器和 goldendict 字典的可執行文件:



值得一提的是,如果使用 Linux 桌面版,有時候在桌面找不到應用程式的快捷方式,就需要在/usr/share/applications中手動配置桌面圖標文件:



/var

var是variable的縮寫,這個名字是歷史遺留的,現在該目錄最主要的作用是存儲日誌(log)信息,比如說程序崩潰,防火牆檢測到異常等等信息都會記錄在這裡。

這是我的/var/log目錄,可以看到很多系統工具的 log 文件(夾):



日誌文件不會自動刪除,也就是說隨著系統使用時間的增長,你的var目錄占用的磁碟空間會越來越大,也許需要適時清理一下。

/home

最後說home目錄,這是普通用戶的家目錄。在桌面版的 Linux 系統中,用戶的家目錄會有下載、視頻、音樂、桌面等文件夾,這些沒啥可說的,我們說一些比較重要的隱藏文件夾(Linux 中名稱以.開頭就是隱藏文件)。

這是我的家目錄的部分文件:



其中.cache文件夾存儲應用緩存數據,.config文件夾存儲了一部分應用程式的配置,比如說我的 Chrome 瀏覽器配置就是那裡面。但是還有一部分應用程式並不把配置儲存在.config文件夾,而是自己創建一個隱藏文件夾,存放自己的配置文件等等信息,比如你可以看到 Intellij 的配置文件就不在.config中。

最後說.local文件夾,有點像/usr/local,裡面也有bin文件夾,也是存放可執行文件的。比如說我的 python pip 以及 pip 安裝的一些工具,都存放在~/.local/bin目錄中。但是,存在這裡的文件,只有該用戶才能使用。

這就是為什麼,有時候普通用戶可以使用的命令,用 sudo 或者超級用戶卻被告知找不到該命令。因為有的命令是特定用戶家目錄里的,僅被添加到了該用戶的PATH環境變量里,只有他可以直接用。你超級用戶想用當然可以,但是得寫全絕對路徑才行。

最後總結

如果修改系統配置,就去/etc找,如果修改用戶的應用程式配置,就在用戶家目錄的隱藏文件里找。

你在命令行里可以直接輸入使用的命令,其可執行文件一般就在以下幾個位置:

/bin 
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/home/USER/.local/bin
/home/USER/.local/sbin

如果你寫了一個腳本/程序,想在任何時候都能直接調用,可以把這個腳本/程序添加到上述目錄中的某一個。

如果某個程序崩潰了,可以到/val/log中嘗試尋找出錯信息,到/tmp中尋找殘留的臨時文件。

設備文件在/dev目錄,但是一般來說系統會自動幫你掛載諸如 U 盤之類的設備,可以到/media文件夾訪問設備內容。

來源:CU技術社區

End

全國大學生科技創新大賽徵稿函

徵稿內容

機械設計等設計作品,通信作品、工程作品、機電作品、電子作品、科技作品等,可以是與之相關的論文,也可以是作品說明,只要是設計、通信、工程、機電、電子、科技等相關都可以。

徵稿對象

在校大學生。

組別設置

本比賽下設組別與作品類別相同,如機械設計作品,則組別為機械設計組;通信作品,則組別為通信組,以此設置。

稿件發送

參賽作品以電子文檔形式發送,郵件發送至:[email protected]。主題為「大學生科技創新大賽+作品+作者姓名」。

文章來源: https://twgreatdaily.com/B-Lt1WwBJleJMoPMiy_l.html