在Linux系统中,我们经常需要检查磁盘空间使用情况,找出哪些目录占用空间。

命令
du -sh /* 2>/dev/null | sort -h

命令组合能快速扫描根目录下所有一级子目录的大小,并按人类可读格式排序显示。

解析:

du -sh /*

du:disk usage,磁盘使用情况统计命令
-s:只显示每个参数的总计(summary)
-h:以人类可读格式显示大小(KB, MB, GB)
/*:匹配根目录下的所有一级子目录和文件

2>/dev/null

将错误信息重定向到/dev/null(即丢弃错误信息)
因为扫描某些系统目录可能需要root权限,这可以避免权限不足的报错干扰结果

| sort -h

管道将du的输出传递给sort命令
-h:按人类可读的数字大小排序(能正确识别K、M、G等单位)

实际应用示例

执行该命令后,你会看到类似这样的输出:

12K /lost+found
1.2M /tmp
156M /etc
3.4G /var
15G /home
256G /data

这个结果清楚地显示了根目录下各一级子目录的大小排序,让你一眼就能看出哪个目录占用了最多空间。

进阶用法
1. 包含隐藏目录
du -sh /.* | grep -v “/\.\.” | sort -h

2. 扫描特定目录
du -sh /home/* 2>/dev/null | sort -h

3. 显示前N大目录
du -sh /* 2>/dev/null | sort -hr | head -n 5

4. 排除特定文件系统
du -sh –exclude=/proc –exclude=/sys /* 2>/dev/null | sort -h

注意事项
权限问题:某些系统目录需要root权限才能完整扫描,可以使用sudo:

sudo du -sh /* 2>/dev/null | sort -h

执行时间:扫描大容量磁盘可能需要较长时间,可以考虑使用-d参数限制扫描深度:

sudo du -h -d 1 / 2>/dev/null | sort -h

远程服务器:在远程服务器上使用时,建议搭配timeout命令防止长时间无响应:

timeout 30s du -sh /* 2>/dev/null | sort -h

替代方案
如果你的系统不支持sort -h(较老的Linux版本),可以使用:

du -sk /* 2>/dev/null | sort -n | awk ‘{if($1>1024**2) printf(“%.1fG\t”,$1/1024**2); else if($1>1024) printf(“%.1fM\t”,$1/1024); else printf(“%.1fK\t”,$1); print $2}’

这个复杂的命令会:

以KB为单位统计大小
数字排序
使用awk转换为易读格式
总结
du -sh /* 2>/dev/null | sort -h是一个简单而强大的命令组合,能帮助你快速定位磁盘空间占用问题。记住这个命令,它将成为你Linux系统管理工具箱中的重要工具之一。

掌握这个技巧后,你可以轻松:

找出哪个目录占用了最多空间
定位异常增长的文件目录
定期监控系统磁盘使用情况
为磁盘清理和扩容提供数据支持

扫码领红包

微信赞赏支付宝扫码领红包

发表回复

后才能评论