前言
最近在復習linux,發現有些目錄總是忘記內容,發現有些還是得從原義和實際例子去理解會記憶深刻些。以下是個人的一些理解
Linux目錄
常見的Linux下的目錄如下:
1. 根目錄 /
(Root Directory)
- 英文含義:
/
是文件系統的根(root)目錄。它是所有文件和目錄的起點,類似于樹的根,所有其他文件夾和文件都是從這里延伸出來的。 - 作用:作為文件系統的根目錄,它是所有路徑的起始點。
- PS:根目錄在系統啟動初期可能是只讀掛載的,普通用戶無法直接在根目錄下創建文件,只有管理員(root 用戶)有權限操作。
- 實際例子:運行
ls /
可以列出根目錄下的所有子目錄
2. /bin
(Binary Files)
-
英文含義:
bin
是 “binary”(二進制)的縮寫,表示存放可執行程序的地方。這些二進制文件是操作系統和用戶交互的基本命令。 -
作用:包含啟動和運行操作系統所需的基本命令。這里的命令是系統和用戶都可以使用的,甚至在單用戶模式下也可以執行。
-
常見文件:
/bin/ls
:列出當前目錄下的文件和文件夾(ls
是 “list” 的縮寫)。/bin/cp
:復制文件或目錄(cp
是 “copy” 的縮寫)。/bin/mv
:移動或重命名文件或目錄(mv
是 “move” 的縮寫)。/bin/rm
:刪除文件或目錄(rm
是 “remove” 的縮寫)。
-
PS:在現代 Linux 發行版中,
/bin
有時會符號鏈接到/usr/bin
,這是因為 Filesystem Hierarchy Standard (FHS) 的演進,旨在統一二進制文件存放位置。 -
實際例子:運行
which ls
會返回/bin/ls
,告訴你ls
命令的具體路徑。
3. /sbin
(System Binary Files)
- 英文含義:
sbin
是 “system binary”(系統二進制)的縮寫,存放的是需要管理員權限來執行的系統管理命令。 - 作用:包含系統管理和維護所需的命令,普通用戶一般不需要使用這些命令,除非是系統管理員。
- 常見文件:
/sbin/init
:系統初始化進程,是系統啟動時運行的第一個程序。/sbin/reboot
:重啟系統的命令。/sbin/shutdown
:關閉系統的命令。
- PS:這些命令通常需要超級用戶權限(
sudo
),普通用戶嘗試直接運行會提示權限不足。 - 實際例子:執行
sudo /sbin/fdisk -l
可以列出磁盤分區信息(需要 root 權限)。這些命令通常用于系統維護和調試。
4. /etc
(Etcetera - Configuration Files)
- 英文含義:
etc
是 “et cetera”(等等)的縮寫,雖然這個名字沒有直接說明它的內容,但通常用于存放系統配置文件(歷史遺留問題,遺傳unix)。 - 作用:包含所有系統和程序的配置文件。通常會在這里配置一些與程序、用戶、服務等相關的設置。
- 常見文件:
/etc/passwd
:存儲用戶賬戶信息的文件。這里包括每個用戶的用戶名、密碼、UID 和 GID 等信息。/etc/fstab
:用于系統啟動時掛載文件系統的配置文件。/etc/hostname
:存儲系統主機名的文件。/etc/network/interfaces
:配置網絡接口的文件。
- PS:
/etc
不僅是系統配置的中心,許多服務的配置文件也集中在這里,例如 Apache、Nginx 或 SSH。 - 常見文件補充:
/etc/resolv.conf
:定義 DNS 服務器地址,用于網絡域名解析。/etc/crontab
:系統級別的定時任務配置文件。
- 實際例子:編輯
/etc/hosts
可以添加本地主機名解析,例如127.0.0.1 mylocalserver
。你可以在這些配置文件中修改系統和服務的行為。
5. /home
(Home Directories)
- 英文含義:
home
目錄存放的是每個用戶的家目錄。這里是每個用戶存放個人文件的地方。 - 作用:存放用戶個人文件,會在這里存放自己的代碼、文檔等文件。
- 常見文件:
/home/username
:每個用戶的個人目錄,username
是你的用戶名。例如,如果你的用戶名是oy
,你的家目錄就是/home/oy
。
- PS:用戶的家目錄通常包含隱藏文件(以
.
開頭),如.bashrc
或.profile
,用于配置用戶的 shell 環境。 - 實際例子:在
/home/username
下運行ls -a
可以看到.bash_history
,記錄用戶執行過的命令歷史。
6. /var
(Variable Files)
- 英文含義:
var
是 “variable”(可變的)的縮寫,表示存放那些內容經常變化的文件。通常包括日志、緩存、隊列等。 - 作用:存放程序運行時產生的動態數據,比如日志文件、緩存文件等。
- 常見文件:
/var/log
:存放日志文件的目錄。可以在這里查看系統和應用程序的日志信息,用來調試程序。/var/tmp
:存放臨時文件的目錄,這些文件在系統重啟后可能還會存在。/var/spool
:存放程序任務隊列文件,比如郵件隊列、打印隊列等。
- PS:
/var
的內容通常與系統運行時間相關,占用空間可能會隨時間增長,因此需要定期清理(如日志文件)。 - 常見文件補充:
/var/mail
:存放用戶郵件的目錄(如果系統配置了郵件服務)。
- 實際例子:運行
tail -f /var/log/syslog
可以實時查看系統日志,用于調試。
7. /lib
和 /lib64
(Libraries)
- 英文含義:
lib
是 “library”(庫)的縮寫,包含了程序運行所依賴的共享庫文件。 - 作用:存放系統和應用程序使用的共享庫文件。共享庫文件包含了程序運行時需要的函數、代碼等。
- 常見文件:
/lib/libc.so
:C 標準庫的共享庫文件,很多程序都依賴它。/lib64/libc.so
:64 位版本的 C 標準庫共享庫文件。
- PS:
/lib64
只存在于 64 位系統上,用于區分 32 位和 64 位庫文件。32 位庫可能存放在/lib32
。 - 實際例子:運行
ldd /bin/ls
可以查看ls
命令依賴的共享庫文件路徑。
8. /tmp
(Temporary Files)
- 英文含義:
tmp
是 “temporary”(臨時的)的縮寫,表示存放臨時文件的地方。 - 作用:用于存儲系統或應用程序在運行過程中產生的臨時文件。通常這些文件不會永久保留,系統重啟后有時會被清除。
- 常見文件:
/tmp
:存放臨時文件的目錄,程序在運行時可能會創建文件存放在這里。比如安裝程序臨時解壓的文件、應用程序的緩存文件等。
- PS:
/tmp
的內容通常由系統服務(如tmpfiles.d
)或重啟時自動清理,清理規則可能在/etc/tmpfiles.d/
中定義。 - 實際例子:運行
echo "test" > /tmp/testfile
創建臨時文件,重啟后檢查是否被清除。在處理臨時數據時,可能會使用這個目錄來存放文件,確保數據不會占用永久存儲空間。
9. /dev
(Device Files)
- 英文含義:
dev
是 “devices”(設備)的縮寫,表示設備文件的目錄。 - 作用:存放所有設備文件,這些設備文件讓用戶和應用程序可以與硬件設備進行交互。設備文件可以是硬盤、鍵盤、顯示器、串口等設備的接口。
- 常見文件:
/dev/sda
:表示系統中的第一個硬盤。/dev/tty
:表示終端設備,用于用戶與系統交互的控制臺。/dev/null
:空設備,寫入它的所有數據都會丟失。常用它來丟棄不需要的輸出。
- PS:Linux 遵循“一切皆文件”的哲學,設備文件分為字符設備(如
/dev/tty
)和塊設備(如/dev/sda
)。 - 常見文件補充:
/dev/random
和/dev/urandom
:生成隨機數的偽設備文件,常用于加密或測試。
- 實際例子:運行
cat /dev/urandom | head -c 10
可以生成 10 字節的隨機數據。常常會通過設備文件來與硬件設備進行交互,例如讀寫硬盤,控制外部設備等。
10. /mnt
(Mount Points)
- 英文含義:
mnt
是 “mount”(掛載)的縮寫,表示掛載點的目錄。 - 作用:用于臨時掛載文件系統的目錄。當你掛載一個磁盤或其他文件系統時,它的內容會顯示在
/mnt
下的子目錄中。 - 常見文件:
/mnt
:這個目錄通常為空,系統管理員可以在這里掛載外部存儲設備或分區。比如,掛載一個 USB 驅動器時,可能會在/mnt/usb
下顯示該驅動器的文件系統。
- PS:與
/mnt
類似,/media
也常用于掛載,但/media
更傾向于用戶手動掛載的設備(如 U 盤)。 - 實際例子:運行
sudo mount /dev/sdb1 /mnt
將第二個硬盤的第一個分區掛載到/mnt
。有時會使用這個目錄來掛載外部存儲或進行調試。
11. /opt
(Optional Add-on Software Packages)
- 英文含義:
opt
是 “optional”(可選的)的縮寫,表示可選的附加軟件包。 - 作用:存放可選的第三方軟件包及其相關文件。與
/usr
目錄類似,但/opt
通常用于那些不屬于系統基礎安裝的軟件。 - 常見文件:
/opt
:存放附加軟件的目錄。比如你安裝了一些額外的第三方應用程序,它們通常會存放在這里。
- PS:
/opt
中的軟件通常自成體系,包含自己的子目錄(如/opt/appname/bin
),便于獨立管理。 - 實際例子:安裝 Google Chrome 時,它可能被放置在
/opt/google/chrome
。一般會在這里安裝一些額外的應用程序或庫,以便開發自己的應用。
12. /usr
(User Programs)
- 英文含義:
usr
是 “user”(用戶的)或 “Unix System Resources”(Unix 系統資源)的縮寫。 - 作用:存放系統和應用程序的可執行文件、庫文件以及共享數據等。這個目錄包含了大部分的用戶程序和資源文件。
- 常見文件:
/usr/bin
:存放用戶應用程序的命令。/usr/lib
:存放系統和程序使用的庫文件。/usr/share
:存放共享數據文件,如文檔、圖標、語言文件等。/usr/local
:存放本地安裝的應用程序,通常由管理員手動安裝,不屬于系統默認軟件。
- PS:
/usr
是系統安裝后的大本營,通常占用較多磁盤空間。/usr/local
是用戶自定義安裝的首選位置,避免與系統包管理器沖突。 - 常見文件補充:
/usr/include
:存放 C/C++ 的頭文件,編譯程序時需要。
- 實際例子:運行
/usr/bin/python3
啟動系統安裝的 Python 解釋器。通常會在/usr
下存放安裝的軟件包和共享資源。
13. /srv
(Service Data)
- 英文含義:
srv
是 “service”(服務)的縮寫,表示服務數據的目錄。 - 作用:存放服務提供的數據,通常是系統服務或者用戶服務的文件。例如,網站的頁面文件、數據庫文件等。
- 常見文件:
/srv/www
:存放 Web 服務器的數據文件,如網站的文件。/srv/ftp
:存放 FTP 服務器的數據文件。
- PS:
/srv
的使用因系統而異,有些發行版可能不默認使用,管理員可以根據需要自定義。 - 實際例子:運行 Nginx 時,可以將網站文件放在
/srv/www/html
。可能會在這里放置由服務器提供的數據或文件,如網站文件、數據庫文件等。
14. /sys
(System Information)
- 英文含義:
sys
是 “system”(系統)的縮寫,表示系統信息的目錄。 - 作用:提供關于系統內核和硬件的實時信息。這里存放了很多虛擬文件,它們代表了系統的狀態,可以通過讀取這些文件來獲取系統的運行狀態。
- 常見文件:
/sys/class
:存放系統硬件的信息,如網絡設備、存儲設備等。/sys/fs
:存放文件系統的信息,如掛載的文件系統。
- PS:
/sys
是 sysfs 文件系統的一部分,與/proc
類似,但更專注于硬件和內核參數。
15. /proc
(Process Information)
- 英文含義:
proc
是 “process”(進程)的縮寫,表示進程信息的目錄。 - 作用:提供關于運行中的進程、內核等信息。這個目錄下的文件是虛擬文件,它們不存儲數據,而是內核實時生成的數據。可以用它來監控系統狀態,獲取進程信息。
- 常見文件:
/proc/cpuinfo
:顯示 CPU 信息。/proc/meminfo
:顯示內存使用情況。/proc/[pid]
:每個進程都有一個對應的目錄,[pid]
是進程 ID。你可以在這里查看進程的內存、CPU 使用情況等。
- PS:
/proc
是 procfs 文件系統,內容完全動態生成,占用內存而非磁盤空間。 - 常見文件補充:
/proc/uptime
:顯示系統運行時間(秒)和空閑時間。
- 實際例子:運行
cat /proc/self/stat
查看當前進程(即cat
命令本身)的狀態。可以通過/proc
目錄獲取系統資源的詳細信息,用于性能監控或調試。
16. /boot
(Boot Loader Files)
- 英文含義:
boot
是 “bootstrap”(引導)的縮寫,表示系統啟動相關文件。 - 作用:存放啟動加載程序(bootloader,如 GRUB)和內核映像文件。
- 常見文件:
/boot/vmlinuz
:壓縮的 Linux 內核文件。/boot/grub/grub.cfg
:GRUB 引導配置文件。
17. /run
(Runtime Data)
- 英文含義:
run
表示運行時數據。 - 作用:存放系統運行時的臨時文件(如 PID 文件或鎖文件),通常在重啟后清空。
- 常見文件:
/run/lock
:存放鎖文件,防止多個進程沖突。
- 實際例子:運行
cat /run/mysqld/mysqld.pid
查看 MySQL 服務的進程 ID。
18. /lost+found
- 英文含義:表示“丟失并找到”的文件。
- 作用:在文件系統檢查(如
fsck
)后,損壞或未鏈接的文件會存放在這里。
建議
自己手動查看一下目錄