Mac 当主机,Linux 当服务器(20)故障排查实战——凌晨两点的磁盘告警
Mac 学 Linux 入门(20):故障排查实战——凌晨两点的磁盘告警摘要:凌晨两点被告警叫醒,是什么体验?这篇完整复盘一次真实故障:从df -h看到根分区 93%,用du -sh一层层钻到 Nginx 日志,再用tail+awk揪出「疯狂刷接口的那个 IP」——结果发现是小林自己上周忘关的一个脚本。处置部分讲透一个经典问题:为什么清日志要用truncate而不是rm,以及空间没释放时怎么用lsof +L1找出「已删除但还被占用」的文件。最后是三层根因复盘。承接上篇:Postfix 配好了,告警邮件能发出来了。一、凌晨两点的邮件小林是被手机震动吵醒的。他迷迷糊糊地摸过手机,屏幕亮得刺眼:发件人:xiaolin@qq.com 主题:[FIRING:1] HighDiskUsage (warning) 时间:2026-09-14 02:13:47 内容: 根分区使用率超过 85% 根分区使用率已持续 5 分钟超过 85%,当前值 87.3%小林盯着屏幕看了五秒,脑子才转过来。「磁盘满了?」他翻了个身,想继续睡:「明天再说吧……」然后他想起老周上周说的话:「告警响了,你不处理,它就会一直响。而且明天可能就不是 87% 了,是 97%。到时候你连 SSH 都连不上,因为系统写不了日志、建不了临时文件。」小林一个激灵坐起来,打开电脑,连上 SSH。二、先看磁盘:df -h「第一件事,看哪个分区满了。」小林自言自语,回忆老周教的命令。df-h输出:Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 44G 3.5G 93% / /dev/sda2 1.0G 100M 900M 10% /boot tmpfs 2.0G 0 2.0G 0% /dev/shm「根分区 93% 了。」小林说,「刚才告警是 87%,现在已经 93% 了。涨得这么快?」他看了一眼时间:凌晨 2 点 20 分。距离告警触发才 7 分钟。「什么东西涨这么快?」三、找大目录:du -sh「老周说过,df看整体,du看细节。」小林回忆。sudodu-sh/*2/dev/null|sort-rh|head-10输出:12G /var 8.5G /usr 3.2G /home 1.1G /opt ...「/var最大,12G。」小林说,「进去看看。」sudodu-sh/var/*2/dev/null|sort-rh|head-10输出:10G /var/log 1.2G /var/lib ...「/var/log10G。」小林说,「日志怎么这么大?」sudodu-sh/var/log/*2/dev/null|sort-rh|head-10输出:8.5G /var/log/nginx 800M /var/log/syslog 300M /var/log/journal ...「Nginx 日志 8.5G。」小林惊了,「我博客才上线两周,哪来 8.5G 日志?」sudo