『學了就忘』Linux檔案系統管理 — 58、常用硬碟管理相關命令

繁華似錦Fighting發表於2021-12-01

1、df命令

df命令用於統計分割槽的佔用狀況。

[root@localhost ~]# df -ahT

選項:

  • -a:顯示特殊檔案系統,這些檔案系統幾乎都是儲存在記憶體中的。如proc,因為是掛載在記憶體中,所以佔用量都是0。
  • -h:換算成人類習慣看的單位(人性化顯示)。
  • -T:多出了一列檔案系統型別。

示例如下:

[root@localhost ~]# df -hT 
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3  ext4 19G  2.2G 16G  13%   /
tmpfs      tmpfs 495M 0   495M 0%    /dev/shm
/dev/sdal  ext4 190M 33M  147M 19%   /boot

結果說明:

  • Filesystem:裝置檔名。
  • Type:檔案系統型別。
  • Size:分割槽總大小。
  • Used:佔用大小。
  • Avail:空閒多少。
  • Use%:利用率。
  • Mounted on:掛載點。

2、du命令

du命令用於統計目錄或檔案大小的命令。

[root@localhost ~]# du [選項] [目錄或檔名]

選項:

  • -a:顯示每個子檔案的磁碟佔用量。預設只統計子目錄的磁碟佔用量。
  • -h:使用習慣單位顯示磁碟佔用量,如KB,MB或GB等(人性化顯示)。
  • -s:統計總佔用量,而不列出子目錄和子檔案的佔用量。

(1)ls或者ll命令統計目錄的大小是不準確的,為什麼?

我們通過ls或者ll命令檢視檔案大小,目錄一般是0K或者4k或者是4K的倍數。

如下圖:boot目錄和dev目錄除外。

image

我把一個6.2M大小的壓縮包解壓後,所的到的資料夾,顯示也是4K

如下圖所示:

image

解壓後得到的檔案,反而比壓縮檔案小很多,這明顯就是不正確的資料。

這明顯就是不合理的情況。

說明ls或者ll命令統計檔案大小有問題,統計目錄大小的資料是不準確的。

出現這種問題的原因,還要從分割槽說起。

目錄有自己的block塊,該block塊中存放著檔名和對應的i節點號,和目錄中檔案的檔名和i節點號的資料,目錄的block塊中是不會統計目錄中的檔案大小是多少。

記錄目錄的檔名和對應的i節點號,和目錄中檔案的檔名和i節點號的這些資料,如果一個block塊能裝下,就是4K,如果裝不下,就分多個block塊來儲存,這樣就是4K的倍數。

所以執行[root@localhost ~]# du -h httpd-2.2.9命令,就可以看到httpd-2.2.9目錄中每個檔案的大小,最後會顯示httpd-2.2.9目錄的大小。

如果只需要看檔案的總大小,新增選項s即可。

[root@localhost ~]# du -hs httpd-2.2.9

解釋:

  • 為什麼boot目錄是1K大小,因為之前說過block塊的大小為1K、2K、4K(預設),但是boot是一個單獨的分割槽,預設就是1KB。
  • dev目錄是特殊硬體目錄,裡邊儲存的都是硬碟等裝置資訊,比較特殊,所以除外。

(2)du命令與df命令的區別

  • du命令是用於統計檔案大小的,統計的檔案大小是準確的。
  • df命令是用於統計空間大小的(檔案和臨時檔案都會算,重啟會釋放),統計分割槽的使用率是準確的(更明確的說法是分割槽剩餘空間是準確的)。

再有如果你在工作中不能重啟伺服器,想釋放臨時檔案佔用的空間,也是可以手動釋放的。

sof I grep deleted:是查詢檔案隱藏狀態的命令,找出要刪除的檔案,然後一個程式一個程式的手工kill也是可以的。

這樣做法極其難操作,出現錯誤的機率很高,不推薦手動釋放。

Linux伺服器在計劃之內的重啟所造成的損失,遠比伺服器意外當機或重啟所造成的損失要小的多。

3、fsck檔案系統修復命令

這個命令是Linux系統中自帶的一個檔案系統修復的命令。

這個命令有點類似於Windows系統沒有正常關機(突然斷電了),下次開機的時候會提示是否掃描修復檔案。

自動修復命令:

[root@localhost ~]# fsck -y /dev/sdb1

這條命令在Linux系統開機的時候,會自動執行。如果檔案能通過fsck命令進行修復,開機自動執行也就修復了,如果Linux系統啟動之後檔案還報錯,手工在執行一邊fsck命令,也是沒有用的,修復不好。

4、顯示磁碟狀態dumpe2fs

顯示磁碟狀態使用dumpe2fs命令,執行dumpe2fs + 分割槽號進行檢視。

如何查詢分割槽號,通過df -h命令進行查詢,很方便。

下面是執行命令的結果:

image

上面的資訊很多,如果你只想看超級塊的資訊(也就是最上面的一部分資訊),只需要加上-h選項即可。

如下:

[root@localhost ~]# dumpe2fs -h /dev/sda3

5、檢視檔案的詳細時間

stat 檔名:檢視檔案的詳細時間。

執行命令結果如下:

image

這些資訊能看懂就行。瞭解即可。

6、判斷檔案型別

  • file 檔名:判斷檔案型別
  • type 命令名:判斷命令型別

判斷檔案型別

  • 如果我們判斷一個檔案,會顯示該檔案是一個ASCII碼的英文文件。
    [root@localhost ~]# file anaconda-ks. cfg
    anaconda-ks. cfg: ASCII English text
    
  • 如果我們判斷一個目錄,會顯示該檔案是一個目錄。
    [root@localhost ~]# file 123/
    123/: directory
    

判斷命令型別
Linux系統中的命令分為內部命令和外部命令

  • 如果用type命令判斷命令型別,有命令的位置,說明是外部命令。
    如下:
    [root@localhost ~]# type mkdir
    mkdir is /bin/mkdir
    
  • 如果用type命令判斷命令型別,顯示shell builtin(shell內建命令),說明是內部命令。
    如下:
    [root@localhost ~]# type cd
    cd is a shell builtin
    
  • 如果命令有別名,用type命令判斷命令型別,顯示的是命令的別名資訊。
    [root@localhost ~]# type ls
    ls is aliased to 'ls --color=auto'
    

提示:這兩個命令一般都是在寫指令碼程式的時候使用,平時我們辨別檔案還是資料夾都很方便的(用眼,哈哈)。

相關文章