Linux 磁盘使用监控与清理实用指南
一 快速定位占用
df -h、df -i。当某个分区使用率接近或超过**80%**时建议优先排查。du -xh / | sort -rh | head -n 20;也可先粗查各顶级目录:du -sh /* 2>/dev/null。ncdu /path,按占用排序、可进入子目录快速定位大文件/目录。df -i。二 持续监控与告警
df -H 输出,超过阈值触发通知(邮件、企业微信、Slack 等)。df -h 报表:0 0 * * * df -h > /var/log/disk_usage_$(date +\%Y-\%m-\%d).log;长期留存便于趋势分析与容量规划。iotop 观察进程级磁盘读写,配合 dstat --disk 或 nmon 查看吞吐与负载,判断是“空间不足”还是“写入拥塞”。三 常见大占用清理清单
sudo apt-get clean、sudo apt-get autoclean、sudo apt-get autoremovesudo yum clean all、sudo yum autoremovesudo dnf clean allsudo journalctl --vacuum-time=7d(保留最近 7 天)sudo journalctl --vacuum-size=100Msudo rm -f /var/log/*.gz /var/log/*.1(谨慎操作,避免误删正在写入的日志)sudo rm -rf /tmp/*(确保不影响运行中服务)sync && echo 3 | sudo tee /proc/sys/vm/drop_cachesdocker system prune -af、docker volume prune -ffind / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k 5 -rh | head -n 20truncate -s 0 <file> 以快速释放空间并保留文件句柄。四 自动化脚本模板
#!/usr/bin/env bash
ALERT=80
LOGFILE="/var/log/disk_alert.log"
df -H | awk -v alert="$ALERT" '
NR>1 && !/^Filesystem/ && !/tmpfs|cdrom/ {
gsub(/%/,"",$5)
if ($5 >= alert) {
msg="[$(date)] 警告: 挂载点 $6 使用率 ${$5}%"
echo "$msg" | tee -a "$LOGFILE"
# 这里可替换为你的通知方式:mail/slack/企业微信等
# echo "$msg" | mail -s "磁盘告警" admin@example.com
}
}'
*/30 * * * * /usr/local/bin/check_disk.shdf -h 报表:0 0 * * * df -h > /var/log/disk_usage_$(date +\%F).log五 进阶与容量规划
df/du 报表,结合 nmon/dstat 观察读写趋势与峰值时段,提前规划扩容或数据迁移。sudo smartctl -H /dev/sda,对异常尽早更换。/etc/fstab 中为对应分区添加 noatime/nodiratime 以减少元数据写入,降低 I/O 压力(修改前请评估业务影响)。