du 指令是用來檢查 Linux 系統的檔案或目錄的使用大小,當 disk 堆滿的時候可以找出哪裡的資料佔據過多,來做故障排除。

命令參數

  • -a—all: 顯示目錄中個別檔的大小。

  • -b—bytes: 顯示目錄或檔大小時,以 byte 為單位。

  • -c—total: 除了顯示個別目錄或檔的大小外,同時也顯示所有目錄或檔的總和。

  • -k—kilobytes: 以 KB (1024bytes) 為單位輸出。

  • -m—megabytes: 以 MB 為單位輸出。

  • -s—summarize: 僅顯示總計,只列出最後加總的值。

  • -h—human-readable: 以 K、M、G 為單位,提高資訊的可讀性。

  • -x—one-file-xystem: 以一開始處理時的檔系統為准,若遇上其他不同的檔系統目錄則略過。

  • -L <符號鏈結> 或 —dereference <符號鏈結>: 顯示選項中所指定符號鏈結的原始檔案大小。

  • -S—separate-dirs: 顯示個別目錄的大小時,並不含其子目錄的大小。

  • -X <檔> 或 —exclude-from= <檔>: 在 <檔> 指定目錄或檔。

  • —exclude= <目錄或檔>: 略過指定的目錄或檔。

  • -D—dereference-args: 顯示指定符號鏈結的原始檔案大小。

  • -H—si: 與 -h 參數相同,但是 K、M、G 是以 1000 為換算單位。

  • -l—count-links: 重複計算硬體鏈結的檔。

常見用法

1. 顯示目錄或者檔所占空間

du

2. 檔案和目錄都顯示(適合找Docker容器佔用空間)

du -sh /var/lib/docker/*

3. 以人類可讀的方式顯示目錄大小

du -h /home

4. 顯示當前目錄下最大的前10個資料夾

du -h --max-depth=1 | sort -hr | head -n 10

5. 排除特定目錄

du -h --exclude="node_modules" .

結合其他命令

du 命令可以結合其他工具如 sorthead 等來更有效地分析磁碟空間:

# 找出 /var 目錄下最大的5個子目錄
du -h /var | sort -rh | head -5

# 用 ncdu 交互式檢查目錄大小
ncdu /var

當系統告警磁碟空間不足時,使用 du 命令可以快速找出哪些資料夾或檔案佔用了大量空間,從而採取清理或遷移的措施。