鳥哥的Linux私房菜 基礎學習篇讀書筆記(9):Linux磁碟與檔案系統管理(2),linux私房菜
上一篇文章主要從理論上分析了Linux的Ext2檔案系統,這一篇主要講解如何查看Linux的檔案系統的容量以及講解Linux檔案系統中的串連檔案。
可以通過df和du命令來查看磁碟與目錄的容量,df命令用來列出檔案系統的整體磁碟容量,df命令的用法是 df [-ahikHTm] 目錄或檔案名稱,如果df命令不加任何參數,則預設將系統內所有的檔案系統的容量以及使用方式都列出來。關於df命令還需要說明的是 df命令是查看檔案系統的整體使用方式,因此是從Super block(見前一篇文章)中讀取資訊,因此df命令的執行速度非常快。
以下是df命令的使用舉例:
可以看到,雖然用df命令查看/etc目錄的使用方式,但是df命令會自動分析該目錄所在的分區,然後將該分區的使用方式列舉出來。這裡不要犯迷糊,只要不進行磁碟限額,那麼/etc目錄能夠使用的容量就是該目錄所在檔案系統的容量。
那如果我就是要看當前/etc目錄已佔用的檔案系統容量,那就得通過 du命令,du命令主要用來查看目錄所佔的容量。不同於df命令,du命令是直接到檔案系統內去查看所有的檔案系統資料,因此執行時間可能會久一點。關於du命令還是多講一點,可能鳥哥書上講的不是很清楚,du命令預設會顯示該目錄下各個子目錄的容量,而顯示的總目錄容量是已經將該目錄下各個子目錄的容量加和的。
舉個例子,:
/home目錄下總共有三個子目錄: /home/hw , /home/test_one ,/home/fuchencong ,它們的容量(已經算上子目錄)分別是4k,52k,240k,而且可以查看到 /home 目錄自己本身(不運算元目錄的容量)是4k,所以最終顯示的/home目錄的容量是 4k + 52k + 240k + 4k= 300k。
另外在使用du命令時,如果加上-S參數,則顯示的目錄容量就不會加上子目錄的容量,此時只是顯示該目錄本身佔用的容量(當然還包括該目錄下的直接檔案),如所示: /home目錄顯示的佔用容量為4k,這就是/home目錄本身所佔用的容量,而不包括其子目錄所佔用的容量。
接下來講解Linux中的串連檔案,如果已經理解了Linux的Ext2檔案系統,那麼理解串連檔案就非常簡單了。
在Linux作業系統中,串連檔案分為兩種,硬串連(實際串連)和 符號串連。可以使用ln命令建立串連檔案,ln命令的使用方法為 ln [-sf] 源檔案 目標檔案,如果不加任何參數製作串連檔案,就是預設建立硬串連,如果加上-s參數,就是代表建立符號串連檔案。那硬串連和符號串連有什麼區別呢?
上一篇文章已經講過,Linux讀取一個檔案時,首先要從目錄block裡找出該檔案名稱對應的inode號碼,那如果同時有多個檔案名稱同時對應一個inode號碼,那麼無論通過哪個檔案名稱實際上都訪問到同一個檔案,其實這就是硬串連。 簡單的說,永久連結只是在某個目錄下建立一條檔案名稱關聯到某個inode號碼的關聯記錄而已。當有多個檔案名稱關聯到同一個inode號碼,就可以通過其中的任意一個檔案名稱來訪問該檔案的資料,而且無論通過哪個檔案名稱來修改資料,最終都會修改到實際的檔案資料。類似的,當刪除一個檔案時,其實只是將對應的inode裡的引用計數-1,並不會真的刪除檔案資料,只有當該檔案inode裡的引用計數減為0,該檔案資料才會真的被刪除。
但是硬串連也是有限制的,因為每個檔案系統都有自己的inode編號,所以目錄項裡檔案名稱對應的inode號碼只能是同一檔案系統裡的inode號碼,因此硬串連只能針對同一檔案系統建立,不能跨檔案系統建立。而且硬串連也不能串連到目錄。一方面對目錄建立硬串連會增加系統內容的複雜度,另一方面對目錄建立硬串連容易造成迴圈。因此不支援硬串連到目錄。
Linux中還有一類串連,稱為符號串連。不同於硬串連,符號串連是建立了一個獨立的檔案,只不過對這個檔案的資料讀取會被轉向為對它指向檔案的資料讀取。因此當源檔案被刪除時,符號串連就會“開不了”。而且對於一個符號串連,它的檔案長度就是它所引用檔案的檔案名稱長度,因為在串連檔案中,它的內容就是目標檔案的“檔案名稱”。
以下是硬串連和符號串連的一個執行個體:
圖中可以清晰的觀察到hard_link 和 test.file關聯到同一個inode號碼,因此這兩個檔案代表的是同一個檔案,而且引用計數為2。而symbol_link檔案的inode不同於test.file,因為symbol_link是一個獨立的檔案,只不過它是一個指向test.file的串連檔案,而且可以觀察到symbol_link的檔案長度為9位元組,其實就是test.file這個檔案的檔案名稱長度。
最後講解一下關於目錄的串連數量。每當建立一個空目錄時,該新目錄的串連數量為2。為什麼呢?首先目錄本身佔據一個串連,然後該目錄裡還有一個特殊目錄“.”,它也是代表該目錄,因此該目錄的串連數量為2。 如果在該新的目錄裡建立一個子目錄,該目錄的串連數又將+1。因為建立的子目錄裡有一個特殊目錄“..”,代表上級目錄,它也指向該目錄,因此該目錄的串連數+1。
本章Linux命令總結:
df, du, ln。
鳥哥的Linux私房菜 基礎學習篇(第二版)書後習題答案
鳥哥的網站應該有。
linux.vbird.org/
剛剛用IE訪問,顯示亂碼。呵有意思
學完了鳥哥的Linux私房菜基礎學習篇可以找工作
大哥你太逗了吧!
剛畢業還是怎麼著,如果剛畢業的話還是有希望的!
不知道你學linux的目的到的是什麼!也不知道你的編程基礎怎麼樣!給你點建議:
1、如果是想作營運的話建議你先學一下資料庫,MYQSL、Oracle、DB2等至少要會一樣,可以為你找工作加分
2、如果是程式員C/C++學的好的話會很受歡迎,如果你是java程式員也可以
3、最好有做過項目的經驗,包括實習的,如果沒有畢業設計也可以,要再沒有自己到網上找幾個“寫一下試試,眼過千遍不如手過一遍!書看千行不如手敲一行!手敲千行不如單步一行!單步原始碼千行不如單步對應彙編一行!”雖然這句話是針對C/C++程式員的,不過前三句對任何程式都適用!
4、多瞭解一下新技術,有空去CSDN逛一下,看看程式員應該具備哪些技巧和素質!
就寫這麼多吧,希望對你有用!