常見的重要目錄的意義
ls -l
輸出的意義
- 第一列:規定了不同的用戶對文件所擁有的權限。其中第一位表示文件的格式,具體爲:
-
-
:普通文件,包括純文本文件、二進制文件、各種壓縮文件等。 -
d
:目錄,類似 Windows 系統中的文件夾。 -
b
:塊設備文件,就是保存大塊數據的設備,比如最常見的硬盤。 -
c
:字符設備文件,例如鍵盤、鼠標等。 -
s
:套接字文件,通常用在網絡數據連接,可以啓動一個程序開監聽用戶的要求,用戶可以通過套接字進行數據通信。 -
p
:管道文件,其主要作用是解決多個程序同時存取一個文件所造成的錯誤。 -
l
:鏈接文件,類似 Windows 系統中的快捷方式。
-
- 第二列:引用計數,文件的引用計數代表該文件的硬鏈接個數,而目錄的引用計數代表該目錄有多少個一級子目錄。
- 第三列:所有者,也就是這個文件屬於哪個用戶。默認所有者是文件的建立用戶。
- 第四列:所屬組,默認所屬組是文件建立用戶的有效組,一般情況下就是建立用戶的所在組。
- 第五列:大小,默認單位是字節。
- 第六列:文件修改時間,文件狀態修改時間或文件數據修改時間都會更改這個時間,注意這個時間不是文件的創建時間。
- 第七列:文件名或目錄名。
文件主要的 3 個時間參數
- atime:最近訪問時間。只要文件的內容被讀取,訪問時間就會更新。
- mtime:最近數據修改時間。當文件的內容數據發生改變,此文件的數據修改時間就會跟着相應改變。
- ctime:最近狀態修改時間。當文件的狀態(如權限或屬性)發生變化,就會相應改變這個時間。
在ls
時可以添加參數--time=atime/ctime
來控制第六行顯示哪個時間。
可以使用touch -d "yyyy-mm-dd HH:mm" <filename>
來更改某個時間。
ext 文件系統
ext4 文件系統會把分區主要分爲兩大部分:小部分用於保存文件的 inode信息;剩餘的大部分用於保存 block 信息。
node 的默認大小爲 128 Byte,用來記錄文件的權限(r、w、x)、文件的所有者和屬組、文件的大小、文件的ctime、atime和mtime、文件的數據真正保存的 block 編號。每個文件需要佔用一個 inode。
inode 中是不記錄文件名的,文件名記錄在文件所在目錄的 block 中。
block 的大小可以是 1KB、2KB、4KB,默認爲 4KB。block 用於實際的數據存儲,如果一個 block 放不下數據,則可以佔用多個 block。這多個 block 有可能是連續的,也有可能是分散的。
如果想要讀取文件內容,就必須藉助目錄中記錄的文件名找到該文件的 inode,才能成功找到文件內容所在的 block 塊。
硬鏈接和軟鏈接
軟鏈接:產生一個特殊的文件,該文件用來指向另一個文件,類似於 Windows 系統中給文件創建快捷方式。
硬鏈接:給一個文件的 inode 分配多個文件名,通過任何一個文件名,都可以找到此文件的 inode,從而讀取該文件的數據信息。