摘要:#!/bin/bashecho "=== 当前磁盘使用率 ==="df -hecho "=== Top20 大文件 ==="find / -xdev -type f -size +100M -exec du -h {} \; 2>/dev/null | sor
服务突然 502?九成是磁盘被日志打爆!本文教你 5 条命令,3 分钟定位、2 分钟清理,再不怕“深夜报警”。
看到 Use% 飙红?记下对应挂载点,继续下一步。
# 查看单个文件申请大小(可能虚高)ls -lh /path/to/file# 查看目录真实占用du -sh /var/log# 直接搜大于 500M 的文件find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr | head小贴士:-xdev 防止跨分区搜索,速度快一倍!
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAMEnginx 1234 root 7u REG 8,17 8589934608 0 /var/log/nginx/access.log (deleted)看到 (deleted) 字样,说明文件已删,但句柄仍开着!
# 优雅重启对应服务systemctl restart nginx# 或者暴力杀(慎用)kill -9 1234重启后,磁盘空间瞬间回落,服务恢复。
把下面脚本保存成 clean_disk.sh,chmod +x 后直接跑:
#!/bin/bashecho "=== 当前磁盘使用率 ==="df -hecho "=== Top20 大文件 ==="find / -xdev -type f -size +100M -exec du -h {} \; 2>/dev/null | sort -hr | head -20echo "=== 已删除但仍占用的文件 ==="lsof +L1 | awk '{print $2, $9}' | sort -k2 -hrecho "=== 清理7天前日志 ==="find /var/log -type f -mtime +7 -name "*.log" -delete建议:先在测试机跑一遍,确认无误再上生产!
来源:linux运维菜