文章目錄
- Linux du 命令終極指南:從基礎到精通
- du 命令簡介
- 常用參數詳解
- 常見用法示例
- 查看當前目錄總大小
- 查看當前目錄及其子目錄占用空間
- 只顯示當前目錄總占用空間
- 查看目錄下每個文件和子目錄的大小
- 查看某目錄深度為 1 的大小分布
- 查看某目錄并排除日志文件
- 查看多個目錄的總大小
- 統計單個文件的磁盤占用
- 進階技巧與常見問題
- 文件邏輯大小 vs 磁盤占用
- 符號鏈接處理
- 快速定位大文件
- 自動化清理實戰
- 定期清理舊日志
- 清理空目錄
- du 和 df 的區別
- 實戰:查找占用空間最多的目錄
- 總結
Linux du 命令終極指南:從基礎到精通
在日常的 Linux 運維或開發工作中,我們經常需要查看某個目錄或文件所占用的磁盤空間,以便進行空間管理、故障排查或優化存儲結構。而 du
(Disk Usage)命令就是專門用于顯示磁盤使用情況的利器。
本文將為你全面講解 du
命令的使用方法、常用參數及典型示例,幫助你快速上手并靈活運用。
du 命令簡介
du
(disk usage)命令用于顯示文件或目錄所占用的磁盤空間。默認情況下,它會遞歸地統計每個子目錄的大小,并以字節為單位輸出。
du [選項] [文件或目錄]
常用參數詳解
參數 | 含義 |
---|---|
-h | 以人類可讀的方式顯示(如 KB、MB、GB) |
-s | 僅顯示總計(summary),不遞歸顯示子目錄 |
-a | 顯示所有文件和目錄的大小 |
-c | 最后增加一行顯示總計(總和) |
-d N | 顯示目錄深度為 N 的子目錄大小(適用于 GNU 版本) |
--max-depth=N | 功能與 -d 相同(更具可讀性) |
--exclude=PATTERN | 排除匹配模式的文件或目錄 |
-x | 只統計當前文件系統的使用情況,忽略掛載點 |
--time | 顯示目錄的最后修改時間 |
--apparent-size | 顯示文件邏輯大小(非磁盤占用) |
-L | 統計符號鏈接指向的目標大小 |
常見用法示例
查看當前目錄總大小
du -sh
輸出:
12G .
查看當前目錄及其子目錄占用空間
du -h
輸出示例:
4.0K ./cache
2.5G ./projects/code
8.2G ./projects
只顯示當前目錄總占用空間
du -sh
輸出示例:
100M .
查看目錄下每個文件和子目錄的大小
du -ah
查看某目錄深度為 1 的大小分布
du -h --max-depth=1
或
du -h -d 1
適用于按模塊查看空間占用情況,非常適合查找“哪個目錄最大”。
查看某目錄并排除日志文件
du -h --exclude="*.log"
查看多個目錄的總大小
du -ch dir1 dir2
輸出中會顯示每個目錄的大小,最后一行是總計(total)。
統計單個文件的磁盤占用
du -h filename
注意:
du
顯示的是文件實際占用磁盤的空間,而不是邏輯文件大小(邏輯大小可通過ls -l
查看)。
進階技巧與常見問題
文件邏輯大小 vs 磁盤占用
- 邏輯大小:文件實際內容長度(
ls -l
顯示的值)。 - 磁盤占用:文件占用的塊空間(
du
默認值)。
示例:
echo "1" > small.txt # 創建 1 字節文件
ls -l small.txt # 輸出:1 (邏輯大小)
du -h small.txt # 輸出:4.0K(塊大小)
du --apparent-size -h small.txt # 輸出:1
符號鏈接處理
- 默認行為:統計鏈接指向的文件大小。
- 僅統計鏈接自身:去掉
-L
參數。
du -sh /usr/bin/python # 統計 Python 可執行文件大小
du -shL /usr/bin/python # 同上(顯式解除引用)
快速定位大文件
結合 find
和 sort
:
find /home -type f -size +500M -exec du -h {} + | sort -rh
輸出:
3.5G /home/user/videos/movie.mp4
2.9G /home/user/backup.tar.gz
自動化清理實戰
定期清理舊日志
腳本 /scripts/clean_logs.sh
:
#!/bin/bash
# 刪除 /var/log 下 30 天前的日志
find /var/log -name "*.log" -mtime +30 -exec rm -f {} \;
添加定時任務:
crontab -e
# 每天凌晨 2 點執行
0 2 * * * /scripts/clean_logs.sh
清理空目錄
刪除 7 天內未被訪問的空目錄:
find /data/tmp -type d -empty -atime +7 -delete
du 和 df 的區別
命令 | 功能 | 使用層級 |
---|---|---|
du | 顯示文件/目錄占用的磁盤空間 | 具體到目錄或文件 |
df | 顯示整個文件系統的磁盤使用情況 | 文件系統級別 |
因此,當你想分析“哪個目錄占了太多空間”時,用 du
;當你想知道“磁盤還剩多少空間”時,用 df
。
實戰:查找占用空間最多的目錄
結合 sort
和 du
使用:
du -h --max-depth=1 | sort -hr | head -n 10
這條命令將列出當前目錄下占用空間最多的前 10 個目錄,非常適合快速分析磁盤空間瓶頸。
總結
du
是一個功能強大又輕量的命令,掌握其用法可以幫助我們快速定位磁盤空間的使用情況,是每個 Linux 用戶的必備技能之一。
建議你在日常工作中,多嘗試將 du
與 sort
、head
、find
等命令組合使用,打造屬于自己的空間分析工具鏈。