Linux 文件系統(目錄介紹)

Linux 文件系統(目錄介紹)

Linux 系統大家一定不陌生,學習工作中肯定會和 Linux 打交道。不過談及 Linux,給人的第一印象可能就是黑乎乎的命令行,亂七八糟的文件夾,甚至安裝軟件都不知道是怎麼安裝上去的。但是隻要熟練了這些命令,會發現開發速度會快很多,而且可以在妹子面前炫耀。

 

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

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

/bin 和 /sbin

binBinary的縮寫,存放着可執行文件或可執行文件的鏈接(類似快捷方式),如下圖:

 

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

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

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

/boot

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

/dev

devdevice的縮寫,這裏存放着所有的設備文件。在 Linux 中,所有東西都是以文件的形式存在的,包括硬件設備。

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

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

/etc

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

/etc/yum.repo.d中就存放着對應的配置,比如說鏡像列表(我配置的阿里雲鏡像):

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

/lib

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

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

/media

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

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

/mnt

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

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

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

/opt

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

/proc

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

你會發現/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

srvservice的縮寫,主要用來存放服務數據

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

/tmp

tmptemporary的縮寫,存儲一些程序的臨時文件

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

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

/usr

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

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

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

 

/var

varvariable的縮寫,這個名字是歷史遺留的,現在該目錄最主要的作用是存儲日誌(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文件夾訪問設備內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章