在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系统管理工具箱中的重要工具之一。
掌握这个技巧后,你可以轻松:
找出哪个目录占用了最多空间
定位异常增长的文件目录
定期监控系统磁盘使用情况
为磁盘清理和扩容提供数据支持
微信赞赏
支付宝扫码领红包