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.mzph.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启动程序显示如下的内容,没有明确…