5种高效方法教你全面掌握Linux服务器磁盘使用情况
作为Linux系统管理员或开发者,及时了解服务器磁盘使用状况是日常工作的重要环节。本文将详细介绍5种专业且实用的方法,帮助你全面监控Linux服务器的磁盘空间。
1. df命令:快速概览磁盘使用情况
df(disk filesystem)命令是最基础的磁盘检查工具,可以显示文件系统的磁盘空间使用情况。
df -h
参数说明:
- -h:以人类可读的格式显示(GB/MB/KB)
- -T:显示文件系统类型
- -i:显示inode使用情况
典型输出示例:
Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 32G 16G 67% / /dev/sdb1 200G 50G 150G 25% /data
2. du命令:深入分析目录占用空间
du(disk usage)命令可以帮助你找出哪些目录或文件占用了大量空间。
du -sh /var/* | sort -rh | head -10
这条命令将:
- 显示/var目录下所有子目录的大小(-s表示总计,-h表示人类可读格式)
- 按大小逆序排序
- 只显示前10个最大的目录
高级技巧:
# 查找大于100MB的文件
find / -type f -size +100M -exec ls -lh {} \;
3. ncdu:交互式磁盘分析工具
对于喜欢GUI界面的用户,ncdu(NCurses Disk Usage)是一个强大的替代方案。
sudo apt install ncdu # Ubuntu/Debian
sudo yum install ncdu # CentOS/RHEL
ncdu /
主要特点:
- 交互式界面,支持键盘导航
- 可以快速扫描整个文件系统
- 支持删除文件和目录
- 显示百分比和图形化进度条
4. 使用lsof查找被删除但仍占用空间的文件
当进程持有已删除文件的句柄时,磁盘空间不会立即释放。
lsof | grep deleted
解决方法:
- 重启持有文件句柄的进程
- 或者直接kill相关进程(谨慎操作)
5. 设置自动化监控和告警
对于生产环境,建议设置自动化监控:
方法一:cron定时任务
# 每天检查一次磁盘空间
0 0 * * * df -h > /var/log/disk-usage.log
方法二:使用监控系统
- Prometheus + node_exporter
- Zabbix
- Nagios
方法三:简单告警脚本
#!/bin/bash
THRESHOLD=90
CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
if [ "$CURRENT" -gt "$THRESHOLD" ]; then
mail -s "磁盘空间警告: $CURRENT%" [email protected]
fi
磁盘清理实用技巧
发现磁盘空间不足时,可以考虑以下清理操作:
- 清理旧的日志文件:
journalctl --vacuum-size=200M - 删除旧的软件包缓存:
apt-get clean或yum clean all - 查找并删除core dump文件
- 清理Docker无用资源:
docker system prune
总结
掌握Linux服务器磁盘使用情况是系统管理的基础技能。从简单的df/du命令到高级的ncdu工具,再到自动化监控方案,本文介绍了全方位的磁盘空间管理方法。建议将日常检查纳入运维流程,并设置适当的告警阈值,避免因磁盘满导致的服务中断。
记住,预防胜于治疗。定期监控磁盘使用情况,及时清理无用文件,才能确保服务器稳定运行。
