Linux监控磁盘空间的常用技巧
df命令查看文件系统磁盘空间概览df(Disk Free)是Linux系统中最基础的磁盘空间监控工具,用于显示所有挂载文件系统的总空间、已使用空间、可用空间及挂载点等信息。常用选项包括:
-h:以人类可读格式(KB、MB、GB)显示大小,便于快速识别;-T:显示文件系统类型(如ext4、xfs),帮助区分不同存储介质;-i:查看inode使用情况(inode耗尽会导致无法创建新文件,即使磁盘空间充足)。df -hT(显示所有挂载点的磁盘空间及文件系统类型)、df -i /(查看根分区的inode使用情况)。du命令分析目录/文件占用情况du(Disk Usage)用于估算文件或目录的磁盘使用量,帮助定位占用空间大的具体对象。常用选项包括:
-h:人类可读格式;-s:仅显示总计(避免递归显示子目录的详细信息);-a:显示所有文件和目录(包括隐藏文件);--max-depth=N:限制递归深度(如--max-depth=1显示当前目录下一级子目录的大小)。du -sh /var/log(查看/var/log目录的总大小)、du -h --max-depth=1 /home(显示/home目录下一级子目录的大小)。ncdu工具进行交互式磁盘分析ncdu(NCurses Disk Usage)是基于文本的交互式工具,通过图形化界面快速定位大文件和目录。它比du更直观,支持键盘导航(方向键移动、Enter进入目录、d删除文件)。
安装方法:Debian/Ubuntu系统使用sudo apt-get install ncdu,CentOS/RHEL系统使用sudo yum install ncdu。
使用方法:ncdu /path/to/directory(如ncdu /查看根分区),进入界面后可逐层分析目录大小。
若需快速找出占用空间大的文件,可结合find、du和sort命令:
find /path/to/search -type f -size +100M(查找/path/to/search目录下大于100MB的文件);du -ah /path/to/search | sort -nr | head -n 20(显示指定目录下最大的20个文件/目录);find与du:find /path/to/search -type f -print0 | xargs -0 du -h | sort -hr | head -n 20(避免文件名含空格时的错误,更安全)。通过编写脚本定期检查磁盘使用率,并在使用率超过阈值时发送警报,可实现自动化监控。示例脚本:
#!/bin/bash
PARTITION="/" # 监控的挂载点(如根分区)
THRESHOLD=80 # 警报阈值(%)
USE=$(df -h $PARTITION | tail -1 | awk '{print $5}' | sed 's/%//g') # 获取使用率
if [ $USE -gt $THRESHOLD ]; then
echo "Warning: Partition ${PARTITION} usage at ${USE}% on $(hostname) as on $(date)" | mail -s "Disk Space Alert" admin@example.com
fi
将脚本保存为/usr/local/bin/check_disk.sh,添加执行权限(chmod +x /usr/local/bin/check_disk.sh),并通过crontab -e添加定时任务(如每30分钟执行一次):
*/30 * * * * /usr/local/bin/check_disk.sh。
对于习惯图形界面的用户,可使用以下工具实现直观的磁盘空间监控:
sudo apt-get install baobab(Debian/Ubuntu)、sudo yum install baobab(CentOS/RHEL)。sudo apt-get install partitionmanager(Debian/Ubuntu)、sudo yum install partitionmanager(CentOS/RHEL)。若需监控磁盘的实时IO性能(如读写速率、IO等待时间),可使用iotop或iostat命令:
sudo apt-get install iotop(Debian/Ubuntu)、sudo yum install iotop(CentOS/RHEL)。使用方法:sudo iotop(需root权限)。sudo apt-get install sysstat(Debian/Ubuntu)、sudo yum install sysstat(CentOS/RHEL)。使用方法:iostat -mx 1(每秒更新一次,显示扩展信息)。