破解 Linux 文件安放之謎:哪里才是絕佳文件歸宿?
- 想象一下,你盯著 Linux 中一大堆晦澀難懂的目錄名。你想知道應(yīng)該把特定類型的文件放在哪里。于是把文件隨意放進(jìn)了 /usr/share,希望這樣做是正確的。
- 幾天后,你發(fā)現(xiàn)應(yīng)該把它放在 /var/local。
- 我們都有過類似的經(jīng)歷。Linux 的目錄結(jié)構(gòu)可能非常令人困惑,甚至有時毫無道理可言。這些名稱究竟代表什么?哪里才是放置文件的“正確”位置?
- 準(zhǔn)備好解密 Linux 目錄,因為我們將踏上一段穿越時光的旅程,讓你的未來更加無壓力。在本文中,我們將揭示這些名稱的含義,以及常見類型文件的存放位置。
- /bin
- 這是系統(tǒng)所需的可執(zhí)行二進(jìn)制文件的主要存儲位置(因此被稱為“bin”)。這些基本二進(jìn)制文件在啟動過程中由系統(tǒng)需要,以確保成功完成。在這里,你會找到像 ls 和 top 這樣的基本命令。
- 在啟動過程中,如果 /usr/bin 不可用,/bin 有時會作為一個符號鏈接提供在頂層。
- /boot
- 這個目錄包含了實際啟動操作系統(tǒng)所需的所有關(guān)鍵文件。其中包括內(nèi)核文件、引導(dǎo)加載程序文件(例如 GRUB)以及適用于現(xiàn)代 UEFI 系統(tǒng)的 EFI 文件。
- 對于 Linux 系統(tǒng)來說,這個目錄是最重要的目錄之一,因為如果這里出了問題,你的系統(tǒng)可能無法啟動,甚至不知道從何啟動。
- /dev
- /dev是“device”的縮寫,它是 Linux 用來存儲對系統(tǒng)上大多數(shù)已連接設(shè)備(包括物理設(shè)備和虛擬設(shè)備)的引用的地方。在這里,你可以找到對硬盤、USB 外設(shè)、虛擬終端甚至空設(shè)備的引用,你可以將東西導(dǎo)向這個設(shè)備,以便讓它們消失。
- 如果你從命令行訪問任何類型的設(shè)備,即使它不是物理硬件,很可能它就存在于這里。
- /etc
- 很有可能你以前曾在 /etc 目錄中研究過。這是 Linux 保存所有核心配置文件的地方,不僅包括自己的程序,還包括你安裝的第三方程序的配置文件。
- 如果你需要修改程序的運行方式、核心網(wǎng)絡(luò)設(shè)置或者 crontab,它們都存在于這個目錄中。
- /home
- 這是一個更具描述性的頂層目錄之一。這正是用戶的主目錄所在的位置。可以將其視為每個用戶在操作系統(tǒng)中擁有的獨立空間。通常情況下,他們擁有自己對應(yīng)主目錄中的所有文件和子目錄。
- 如果在共享機(jī)器上查看此目錄,你可能會發(fā)現(xiàn)許多以各個特定用戶命名的子目錄。在大多數(shù)系統(tǒng)上登錄后,你可以使用路徑中的 ~ 字符來引用自己的主目錄。這對應(yīng)的路徑是 /home/<user>。
- 這是存放僅與你相關(guān)的個人文件的最佳位置。圖片、音樂文件、電子表格或者下一部偉大的小說,都應(yīng)該存放在這里。你不應(yīng)該在這里存儲共享的程序配置或系統(tǒng)級數(shù)據(jù)。
- /lib, /lib32, /lib64, …
- 這些目錄包含了共享的 C 庫和內(nèi)核模塊。這些模塊和庫是之前我們提到的 /bin 目錄中的可執(zhí)行二進(jìn)制文件所需的基礎(chǔ)。換句話說,為了實際啟動操作系統(tǒng)并使用任何默認(rèn)的二進(jìn)制文件,我們需要這些目錄中的庫文件。
- 注意:如果存在多個不同架構(gòu)的庫文件,你會看到其他的 lib<qual> 目錄存在。
- /lost+found
- 這個目錄很簡單。在這里,你會找到一些文件被損壞,但已經(jīng)嘗試過恢復(fù)它們。這通常是由于意外斷電或有時是硬件故障導(dǎo)致的。
- /media
- 這也非常直觀。這是一個掛載點,用于掛載可移動介質(zhì)。在歷史上,它用于 CD、軟盤甚至 Zip 磁盤驅(qū)動器。現(xiàn)在,如果你掛載任何虛擬 ISO 或 CD 鏡像,它們可以出現(xiàn)在這里,以及 USB 閃存驅(qū)動器和其他可移動閃存介質(zhì)。
- /mnt 這是一個更通用的掛載點,你可以在這里掛載可移動介質(zhì)或整個文件系統(tǒng)?,F(xiàn)在,這通常用于存放外部磁盤、NFS 和其他遠(yuǎn)程文件存儲。
- 這個目錄是空的,你可以自行決定在這里掛載什么和如何掛載。
- /opt
- 這是“option”的縮寫,最初用于存放任何附加軟件包。這些軟件包在系統(tǒng)最初發(fā)行時并不包含在內(nèi),并且需要額外的費用。
- 如今,這是少數(shù)幾個可以安裝附加軟件包的位置之一(無論是否需要額外費用)。在某些情況下,發(fā)行版可能根本不使用 /opt,但這是你會找到第三方軟件包數(shù)據(jù)和它們的靜態(tài)配置文件的一個位置。
- /proc
- 這是一個獨特的 Linux 目錄。你不會在這里存儲任何東西,實際上操作系統(tǒng)也不會在這里存儲任何東西。這是 Linux 內(nèi)核的信息中心。這個目錄中的所有“文件”并不是普通文件。它們包含有關(guān)進(jìn)程、內(nèi)存和其他子系統(tǒng)的度量數(shù)據(jù)。這些特殊文件就像是窺視內(nèi)核工作情況的窗口。
- 通過簡單地讀取這個目錄中的文件,你可以獲取一些其他二進(jìn)制文件獲得的相同數(shù)據(jù)。
- /root
- 這是另一個簡單、直觀的目錄。這是 root 用戶的家目錄。如果你以 root 用戶身份登錄到系統(tǒng)上,你會發(fā)現(xiàn)你的家目錄現(xiàn)在在 /root 而不是預(yù)期的 /home/root。這是為了安全考慮,以防萬一 /home 被掛載在一個無法訪問或更糟糕的破損的遠(yuǎn)程分區(qū)上。
- /run
- 這個目錄處理更多的啟動和運行時信息。通常你會在這個位置找到進(jìn)程 ID 或 PID 文件。這些文件描述了進(jìn)程運行的位置,以便其他程序可以在稍后找到它并控制或引用它。
- 此外,還可以在這里放置其他臨時文件,如鎖文件和套接字信息。這個目錄旨在保存運行時信息,而不是持久化數(shù)據(jù)。
- /sbin
- 和 /bin 類似,/sbin 目錄也包含了系統(tǒng)所需的可執(zhí)行二進(jìn)制文件。不同的是,這個目錄中的二進(jìn)制文件具有特殊的用途。它們都專門用于在系統(tǒng)上執(zhí)行管理員功能。這意味著它們具有強(qiáng)大的能力,可以對操作系統(tǒng)進(jìn)行重大修改或維護(hù),因此它們通常存在于這里。
- 你不會在這里找到像 echo 或 cat 這樣的二進(jìn)制文件。這個目錄保留給像 fdisk 或 usermod 這樣的工具。
- /srv
- 這是另一個非常通用的目錄。這個目錄用于存放系統(tǒng)負(fù)責(zé)“提供”的文件。例如,如果該主機(jī)是一個 Web 服務(wù)器,你可能會將所有的 HTML 和圖像資源放在這里。
- /sys
- 根據(jù)你所使用的發(fā)行版及其版本的不同,你的系統(tǒng)上可能會有或沒有 /sys 目錄。這個目錄與 /proc 目錄類似,它包含設(shè)備和內(nèi)核信息,但以更結(jié)構(gòu)化的格式呈現(xiàn)。
- /tmp
- 又一個簡單的目錄。這是一個用于臨時文件的目錄。你可以在這里存儲幾乎任何你(或程序)喜歡的東西,但不能指望它會一直存在。尤其是在重啟之間。
- 如果你需要暫存一些不重要的數(shù)據(jù)或檢查某個文件的輸出格式,將其放在這里是一個選擇。額外的好處是,如果你忘記了它,它可能會自動消失。
- /usr
- 這個目錄可能需要寫一篇專門的文章來介紹。根據(jù) Linux 基金會的 FHS 規(guī)范,它被描述為:
- “共享的、只讀的數(shù)據(jù)?!?/li>
- 這實質(zhì)上意味著它應(yīng)該能夠在主機(jī)之間輕松傳輸,并且具有相同的未經(jīng)修改的結(jié)構(gòu)和層次結(jié)構(gòu)。通常情況下,該目錄中不包含任何獨特的主機(jī)數(shù)據(jù)。其背后的理念是,/usr 的整體可以以只讀模式掛載到另一個系統(tǒng)上而不會出現(xiàn)問題。
- 然而,在實踐中,這個目錄確實被用來存儲任意的信息。在某些情況下,你會發(fā)現(xiàn)文件存放在 /usr/share 或 /usr/local 中。你還會發(fā)現(xiàn)程序編譯或自定義腳本被放置在 /usr/local/bin 中。
- 一般來說,建議將不屬于前面任何類別的配置或特殊數(shù)據(jù)存儲在我們下一個、也是最后一個目錄中。
- /var
- 這是“variable”的縮寫,而這里正是保存變量數(shù)據(jù)的地方。
- 以下是一些傳統(tǒng)上保存在這里的內(nèi)容:
- Lock files
- Debian apt and other running program caches
- E-mail data
- Logs
/var 目錄的主要目的是保存系統(tǒng)在運行時使用和更改的任何動態(tài)數(shù)據(jù)。如果你需要寫入日志或在某處保留動態(tài)的 .conf 文件,那么你就來對地方了。
此外,還有 /var/local 目錄,在我的經(jīng)驗中,它經(jīng)常成為雜項配置文件和其他不太適合其他類別的數(shù)據(jù)的綜合存儲目錄。
總結(jié)
Linux文件系統(tǒng)層次結(jié)構(gòu)是一個復(fù)雜的實體,具有豐富的演變歷史。一旦你熟悉了這些簡短標(biāo)題背后的含義,它們開始變得非常直觀?;〞r間在每個目錄中探索并研究標(biāo)準(zhǔn)本身將使你不僅對放置文件的位置更加熟悉,也對Linux在基本層面上的工作方式更加了解。