文件目錄結構 閑話篇: linux我也是最近才開始學,寫隨筆是為分享學習經驗的同時也留著供自己以後來參考。因為linux一切皆文件的基本哲學思想。所以我決定從文件目錄開始寫。 正文: 首先linux文件系統格式為ext3/4(ext是extended的縮寫,意為擴展,全稱linux擴展文件系統),這 ...
文件目錄結構
閑話篇:
linux我也是最近才開始學,寫隨筆是為分享學習經驗的同時也留著供自己以後來參考。因為linux一切皆文件的基本哲學思想。所以我決定從文件目錄開始寫。
正文:
首先linux文件系統格式為ext3/4(ext是extended的縮寫,意為擴展,全稱linux擴展文件系統),這個簡單提下。
然後linux文件系統是樹狀結構,所有的文件皆在一個叫 / 的目錄下,所以這個 / 也叫做根目錄。
而根目錄(/)下的一級文件目錄大多也是規定好的,由下圖這幾個關鍵目錄(骨幹)組成,這些目錄(文件夾)下各自存放了用於完成不同工作的文件,下圖截取自fhs文檔,感興趣的可以訪問這個網站查看並下載最新的fhs的pdf文檔http://www.pathname.com/fhs/ ,這個文檔是專門講linux文件系統的,最權威
下麵就是我的翻譯工作:
/bin :存放基本的二進位指令文件,一般我們在Linux命令行里輸的命令都是來自於/bin目錄下
/boot :存放系統的開機引導文件,內核會根據/boot分區下的文件配置一步步載入磁碟內的文件開機,相當於Windows的引導分區,占用空間不大,一般幾百M
/dev :存放訪問硬體設備的文件,用來訪問硬碟,記憶體等各個硬體
/etc :存放系統配置文件,開機登陸界面,命令行字元格式,用戶管理都在這個目錄下可以改,相當於Windows下的註冊表
/lib :存放靜態庫文件,應該是給開發程式調用的,相當於Windows下的system32目錄
/media :作為可移動存儲設備的掛載點,用來訪問u盤,cd光碟的內容
/mnt :作為暫時訪問其他文件系統的掛載點,應該訪問windows分區或其他文件格式的設備用的,fhs文檔里對他就四行講解,所以我覺得不重要(其實是我沒怎麼理解)
/opt :存放附加程式安裝包的,也就是後來自己想下的軟體安裝包可以放這裡,我就理解了這些,要求挺多的,詳見fhs文檔3.13處,感覺不重要
/sbin :存放給系統還有root用戶調用的基本二進位文件,許多時候普通用戶執行命令提示許可權不足的命令大多放在這個文件目錄下,還有就是在/usr/sbin目錄下
/srv :存放系統服務產生的數據,但我在centos7系統上查看了它裡面的內容,結果連個隱藏文件都沒有,結合fhs文檔所言,這個文檔具體做什麼沒明確規定(可能是我翻譯問題,但感覺這個不重要)
/tmp :存放臨時數據的文件,這個目錄可以,一般我想做什麼實驗都在這個目錄,做完實驗就把文件清了,所以是垃圾文件集中地,一般存儲空間不夠就問他要點比較安全
/usr :存放共用的可讀文件(不可寫,也就是裡面文件內容大多不能改的),linux文件系統第二重要的目錄(第一重要的目錄被我扔了不好意思),它裡面的/bin子目錄下存放了大多數用戶使用的命令,/include子目錄下放了c語言的頭文件,/lib子目錄下放了庫文件,還有/local,/sbin,/share這些子目錄都相當於工具包,可以理解為Windows下program文件夾,裡面有各類軟體還有軟體用到的庫文件,頭文件,總之對這個目錄能去用裡面的工具但不能去亂改裡面的內容
/var :存放變數數據,跟/tmp目錄差不多,也是臨時數據,但它裡面放的不是垃圾文件,它更傾向於記錄,它裡面記錄了所有程式的日誌還有系統日誌等,當然這些日誌文件也是可以刪的,當然要空間首選還是/tmp目錄
與第三方系統比較:
許多基於linux底層的第三方系統都繼承了一個好習慣,如下圖,左圖是我的虛擬機裝的centos7系統下執行tree命令看到的根目錄結構,可以跟右圖對比:一個不漏
如果你也有裝有centos系統的主機可以執行以下命令查看
1. 安裝tree軟體,一般預設可能沒安裝,可以先在命令行里輸個tree看看找不找得到這個命令,沒有就執行下麵這條命令安裝tree,如果提示許可權不足的話命令前面加個sudo
yum -y install tree
2.tree的用法,下麵的命令是查看根目錄 / 下的一級目錄,這裡-L 後面跟的1就是查看一級目錄,2就是二級目錄
tree -L 1 /
3.查看tree的所有用法的幫助,下麵兩種命令都可以查看這個命令的細緻用法
man tree
tree --help
玩法很多,自行體驗咯
奇怪的地方:
既然都看到這裡了,我就再寫點linux文件系統里神奇的地方吧,就在我們提過的/dev目錄下,有三個特殊的子目錄,如下圖所示,還有神奇的英語介紹
下麵又是我的奇怪翻譯:
/dev/null :所有寫到這個設備(目錄)下的數據都是被刪除的,從這裡讀數據只會返回EOF狀態,其實就是回收站,你可以把不要的垃圾文件mv(move,移動命令)到這裡。
/dev/zero :這個設備是用來輸出0的,任何寫到這個設備的數據都會被扔掉,只能從這個設備里讀取數值0,但這有什麼用呢,如果你要測試硬碟性能,可以從這個設備里讀數據0寫到文件里看看用了多少時間。如下麵的命令就是從zero設備里讀取0寫到我們要測試的boot分區里的1gb文件,bs設置塊大小1m,count也就是寫入塊的個數為1024,那麼總共就是寫入1個g的內容然後會返回測試數據,多大的數據用了多久完成,速度是xxxM/s
dd if=/dev/zero of=/boot/1gb.file bs=1M count=1024
/dev/tty :這個設備相當於終端進程,一旦這個設備打開,所有讀寫操作都會像實際打開的終端一樣在它上面實現(顯示),也就是你打開tty,就能控制對應tty視窗的輸入輸出,終端(terminal)你可以理解成Windows下的桌面,現在windows10可以開多個桌面,而linux也有多個終端可以輸入輸出顯示。
互動環節:
最後想請教各位,linux文件系統里第一重要的目錄是哪個?還有那些我感覺不重要的目錄是不是我遺忘了什麼?寫了隨筆才發現原來自己還是挺多不清楚的。有問題還望大家及時指出,別讓我坑害了像我一樣的新人。