Linux du 命令終極指南:從基礎到精通

文章目錄

  • 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  # 同上(顯式解除引用)

快速定位大文件

結合 findsort

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


實戰:查找占用空間最多的目錄

結合 sortdu 使用:

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

這條命令將列出當前目錄下占用空間最多的前 10 個目錄,非常適合快速分析磁盤空間瓶頸。


總結

du 是一個功能強大又輕量的命令,掌握其用法可以幫助我們快速定位磁盤空間的使用情況,是每個 Linux 用戶的必備技能之一。

建議你在日常工作中,多嘗試將 dusortheadfind 等命令組合使用,打造屬于自己的空間分析工具鏈。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83300.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83300.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83300.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sychronized原理(嚼碎了喂版)

先說一下心得吧,我們知道硬軟不分家,在學習底層原理的時候我們不需要死扣到底,沒必要把硬件方面全吃透,點到為止,學到能夠幫助理解代碼即可,我們的目標是寫出高性能的代碼,而不是創造出硬軟一體…

Ngrok 配置:實現 Uniapp 前后端項目內網穿透

文章目錄 一、下載并安裝 ngrok二、配置 ngrok Authtoken三、啟動本地 uniapp 項目四、使用 ngrok 暴露本地服務五、通過公網 URL 訪問項目六、后端API項目的穿透問題排查 (uni-app 后端 API 示例)交互流程圖示 七、ngrok Web 界面 (本地監控)八、停止 ngrok總結 ngrok 是一款…

k8s灰度發布

基于 Traefik 的加權灰度發布-騰訊云開發者社區-騰訊云 Traefik | Traefik | v1.7 Releases traefik/traefik GitHub 從上面連接下載后上傳到harbor虛擬機 vagrant upload /C/Users/HP280/Downloads/traefik 下載配置文件 wget -c http://raw.githubusercontent.com/conta…

win10-django項目與mysql的基本增刪改查

以下都是在win10系統下,django項目的orm框架對本地mysql的表的操作 models.py----->即表對應的類所在的位置 在表里新增數據 1.引入表對應的在models.py中的類class 2.在views.py中使用函數:類名.objects.create(字段名值,字段名"值"。。。…

`ParameterizedType` 和 `TypeVariable` 的區別

在 Java 的泛型系統中,ParameterizedType 和 TypeVariable 是兩個不同的類型表示,它們都屬于 java.lang.reflect.Type 接口的子接口。兩者都在反射(Reflection)中用于描述泛型信息,但用途和含義不同。 🌟 一…

PR-2021

推薦深藍學院的《深度神經網絡加速:cuDNN 與 TensorRT》,課程面向就業,細致講解CUDA運算的理論支撐與實踐,學完可以系統化掌握CUDA基礎編程知識以及TensorRT實戰,并且能夠利用GPU開發高性能、高并發的軟件系統&#xf…

unity使用ZXing.Net生成二維碼

下載鏈接 https://github.com/micjahn/ZXing.Net 放到Plugins下即可使用

Ubuntu 編譯SRS和ZLMediaKit用于視頻推拉流

SRS實現視頻的rtmp webrtc推流 ZLMediaKit編譯生成MediaServer實現rtsp推流 SRS指定某個固定網卡,修改程序后重新編譯 打開SRS-4.0.0/trunk/src/app/srs_app_rtc_server.cpp,在 232 行后面添加: ZLMediaKit編譯后文件存放在ZLMediakit/rele…

如何備考GRE?

1.引言 GRE和雅思不太相同,首先GRE是美國人的考試,思維方式和很多細節和英系雅思不一樣。所以底層邏輯上我覺得有點區別。 難度方面,我感覺GRE不容易考低分,但考高分較難。雅思就不一樣了不僅上限難突破,下限還容易6…

uniapp|商品列表加入購物車實現拋物線動畫效果、上下左右拋入、多端兼容(H5、APP、微信小程序)

以uniapp框架為基礎,詳細解析商品列表加入購物車拋物線動畫的實現方案。通過動態獲取商品點擊位置與購物車坐標,結合CSS過渡動畫模擬拋物線軌跡,實現從商品圖到購物車圖標的動態效果。 目錄 核心實現原理坐標動態計算拋物線軌跡模擬?動畫元素控制代碼實現詳解模板層設計腳本…

React中使用openLayer畫地圖

OpenLayers(簡稱ol)是一個?開源的WebGIS前端開發庫?,基于JavaScript實現,主要用于在網頁中嵌入動態二維地圖。 官方網站: https://openlayers.org 中文官網: https://openlayers.vip 大家可以去參考學習…

WHAT - 緩存命中 Cache Hit 和緩存未命中 Cache Miss

文章目錄 一、什么是緩存命中?二、前端開發要知道哪些緩存機制(以及命中條件)?1. 瀏覽器緩存(主要針對靜態資源)常見的緩存位置關鍵 HTTP 頭字段(決定命中與否) 2. 前端應用層緩存&a…

10 個可靠的 Android 文件傳輸應用程序

Android 文件傳輸是 Android 用戶的常見需求。我們經常需要將文件從一臺 Android 設備傳輸到 PC 或 Mac。但我們怎樣才能做到這一點呢?俗話說,工欲善其事,必先利其器。因此,首先了解 10 個鋒利的 Android 文件傳輸應用程序&#x…

AlphaEvolve:LLM驅動的算法進化革命與科學發現新范式

AlphaEvolve:LLM驅動的算法進化革命與科學發現新范式 本文聚焦Google DeepMind最新發布的AlphaEvolve,探討其如何通過LLM與進化算法的結合,在數學難題突破、計算基礎設施優化等領域實現革命性進展。從48次乘法優化44矩陣相乘到數據中心資源利…

Java大師成長計劃之第24天:Spring生態與微服務架構之分布式配置與API網關

📢 友情提示: 本文由銀河易創AI(https://ai.eaigx.com)平臺gpt-4-turbo模型輔助創作完成,旨在提供靈感參考與技術分享,文中關鍵數據、代碼與結論建議通過官方渠道驗證。 在微服務架構中,如何管理…

eSwitch manager 簡介

eSwitch manager 的定義和作用 eSwitch manager 通常指的是能夠配置和管理 eSwitch(嵌入式交換機)的實體或接口。在 NVIDIA/Mellanox 的網絡架構中,Physical Function(PF)在 switchdev 模式下充當 eSwitch manager&am…

最新開源 TEN VAD 與 Turn Detection 讓 Voice Agent 對話更擬人 | 社區來稿

關鍵詞:對話式 AI | 語音智能體 | Voice Agent | VAD | 輪次檢測 | 聲網 | TEN GPT-4o 所展示對話式 AI 的新高度,正一步步把我們在電影《Her》中看到的 AI 語音體驗變成現實。AI 的語音交互正在變得更豐富、更流暢、更易用,成為構建多模態智…

AI實踐用例---日程規劃(通用日程管理文件ICS)靈感踩坑日常

我是一位踐行獨立開發者之路的菜鳥開發者。 由于執行力較差,常常有很多想法但是很多時候沒有去踐行。 所以我有了讓大模型為我生成日程安排的想法,這確實可以,很簡單。只需要將你的想法告訴ai就行了。 例如: 發給AI的提示詞: 我想你幫我對,嗯,未來的一年做一個嗯,大…

大疆無人機??DRC 鏈路

在大疆上云API中,??DRC 鏈路??通常指 ??Device-Cloud Remote Control Link(設備-云端遠程控制鏈路)??,它是無人機(或設備)與云端服務之間建立的??實時控制與數據傳輸通道??,用于實現…

tomcat一閃而過,按任意鍵繼續以及控制臺中文亂碼問題

問題描述 今天在打開tomcat,啟動startup.bat程序時 tomcat直接閃退,后面查找資料后發現,可以通過編輯startup.bat文件內容,在最后一行加入pause即可讓程序不會因為異常而終止退出 這樣方便查看tomcat所爆出的錯誤: 然后,我明確看到我的tomcat啟動程序顯示如下的內容,沒有明確…