💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。
- 推薦:kwan 的首頁,持續學習,不斷總結,共同進步,活到老學到老
- 導航
- 檀越劍指大廠系列:全面總結 java 核心技術,jvm,并發編程 redis,kafka,Spring,微服務等
- 常用開發工具系列:常用的開發工具,IDEA,Mac,Alfred,Git,typora 等
- 數據庫系列:詳細總結了常用數據庫 mysql 技術點,以及工作中遇到的 mysql 問題等
- 新空間代碼工作室:提供各種軟件服務,承接各種畢業設計,畢業論文等
- 懶人運維系列:總結好用的命令,解放雙手不香嗎?能用一個命令完成絕不用兩個操作
- 數據結構與算法系列:總結數據結構和算法,不同類型針對性訓練,提升編程思維,劍指大廠
非常期待和您一起在這個小小的網絡世界里共同探索、學習和成長。💝💝💝 ?? 歡迎訂閱本專欄 ??
博客目錄
- 一、`du` 命令基礎
- 基本語法
- 為什么需要 `-h` 選項?
- 二、`du -h` 命令詳解
- 輸出解讀
- 常用選項組合
- 三、`du` 與其他命令的對比
- `du` vs `df`
- `du` vs `ls -l`
- 四、實際應用場景
- 1. 查找大目錄
- 2. 監控用戶磁盤使用
- 3. 排除特定目錄
- 4. 比較目錄變化
- 五、高級技巧與注意事項
- 1. 處理符號鏈接
- 2. 顯示修改時間
- 3. 性能優化
- 4. 跨文件系統統計
- 六、常見問題解答
在 Linux 系統管理和日常維護中,了解文件和目錄占用磁盤空間的情況是一項基本而重要的任務。du
(Disk Usage)命令是完成這一任務的強大工具,而 du -h
則是其中最常用的命令形式之一。
一、du
命令基礎
du
(Disk Usage)命令是 Linux/Unix 系統中用于估算文件和目錄磁盤使用情況的實用程序。它通過遞歸遍歷目錄結構,計算每個文件和子目錄占用的磁盤空間,并以塊為單位(默認情況下)顯示結果。
基本語法
du [選項] [文件或目錄]
如果不指定文件或目錄,du
會默認統計當前目錄及其所有子目錄的磁盤使用情況。
為什么需要 -h
選項?
原始的 du
命令輸出以磁盤塊為單位(通常 1 塊=512 字節或 1KB),這種表示方式對人類閱讀不夠友好。例如:
du data
可能輸出:
123456 data/subdir1
789012 data/subdir2
912468 data
這樣的數字難以直觀理解。-h
(human-readable)選項的出現解決了這個問題,它會自動選擇最合適的單位(KB、MB、GB 或 TB)來顯示大小:
du -h data
輸出變為:
4.0K data/subdir1
8.2M data/subdir2
1.2G data
二、du -h
命令詳解
輸出解讀
du -h
的典型輸出包含多行信息:
- 子目錄行:顯示每個子目錄的大小和路徑
- 總計行(最后一行):顯示指定目錄的總大小
例如:
4.0K data/subdir1
8.2M data/subdir2
1.2G data
這里:
data/subdir1
占用 4.0KBdata/subdir2
占用 8.2MB- 整個
data
目錄占用 1.2GB
常用選項組合
-
-s
(匯總):僅顯示總大小,不顯示子目錄詳情du -sh data
輸出:
1.2G data
-
-c
(總計):在最后添加一個總計行du -hc data
輸出:
4.0K data/subdir1 8.2M data/subdir2 1.2G data 1.2G 總用量
-
--max-depth=N
:控制顯示的目錄深度du -h --max-depth=1 data
只顯示 data 下第一級子目錄的大小
三、du
與其他命令的對比
du
vs df
du
(Disk Usage):從文件系統角度計算文件和目錄占用的空間df
(Disk Free):顯示文件系統的整體磁盤使用情況
du
更適合查找具體目錄或文件占用的空間,而 df
更適合查看整個磁盤或分區的使用情況。
du
vs ls -l
ls -l
顯示的是文件的實際大小(邏輯大小)du
顯示的是文件占用的磁盤空間(可能因塊分配而大于實際大小)
例如,一個 1 字節的文件:
ls -l
顯示 1 字節du
可能顯示 4KB(取決于文件系統的塊大小)
四、實際應用場景
1. 查找大目錄
du -h / | sort -rh | head -n 20
這條命令組合:
- 從根目錄開始計算所有目錄大小
- 按人類可讀格式輸出
- 按大小逆序排序
- 顯示前 20 個最大的目錄
2. 監控用戶磁盤使用
du -sh /home/*
快速查看所有用戶主目錄的磁盤使用情況。
3. 排除特定目錄
du -h --exclude='*.log' /var
統計 /var
目錄大小,但排除所有 .log
文件。
4. 比較目錄變化
du -sh data
# 進行一些操作后
du -sh data
通過兩次執行比較目錄大小的變化。
五、高級技巧與注意事項
1. 處理符號鏈接
默認情況下,du
會統計符號鏈接指向的文件大小。使用 -L
選項可以跟隨符號鏈接:
du -Lh /path
2. 顯示修改時間
結合 --time
選項可以顯示最后修改時間:
du -h --time data
3. 性能優化
對于大型文件系統,du
可能需要較長時間。可以:
- 使用
--apparent-size
顯示表觀大小而非磁盤使用量(更快但不夠準確) - 限制目錄深度
--max-depth
- 在非高峰時段運行
4. 跨文件系統統計
默認 du
會統計掛載點下的其他文件系統。使用 -x
可以限制在當前文件系統:
du -xh /
六、常見問題解答
Q1:為什么 du
和 df
顯示的總空間不一致?
A1:可能原因包括:
- 已刪除但仍有進程打開的文件
- 文件系統保留空間
- 不同的統計方法(
df
統計整個文件系統,du
統計具體文件)
Q2:如何統計目錄中的文件數量而非大小?
A2:使用 find
和 wc
:
find data -type f | wc -l
Q3:du
顯示的 size 為什么比實際文件總和要大?
A3:du
統計的是磁盤使用量,包括:
- 文件實際內容
- 文件系統元數據
- 由于塊分配導致的額外空間
覺得有用的話點個贊
👍🏻
唄。
??????本人水平有限,如有紕漏,歡迎各位大佬評論批評指正!😄😄😄💘💘💘如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且長,行則將至,讓我們一起加油吧!🌙🌙🌙