Linux 进程排查三板斧:ps、top 与 kill
从一次 CPU 飙到 98% 说起
告警群里说服务器 CPU 飙到 98%,登录上去第一件事不是慌着重启,而是搞清楚“是谁在吃、吃了什么、能不能杀”。进程排查三板斧——ps、top、kill——就是回答这三个问题的标准动作。
第一板斧:ps 找嫌疑人
ps aux 列出全量进程快照,配合排序快速锁定:ps aux --sort=-%cpu | head -10 看吃 CPU 最狠的前十名;ps aux --sort=-%mem 找内存大户。锁定目标后记下 PID 和启动命令,ps -ef | grep 进程名 还能看清它的父进程是谁——很多“杀不死”的进程,其实是被某个守护进程不停拉起来的,杀子进程前得先管住父进程。
第二板斧:top 看现场
ps 是快照,top 是直播。输入 top 后按大写 P 按 CPU 排序、M 按内存排序,Shift+H 还能切换到线程视图——多线程程序飙高时,线程视图才能锁定具体是哪个线程在捣乱。顶部 load average 三个数字是过去 1、5、15 分钟的平均负载,拿它和 CPU 核数比一下:负载长期高于核数,才说明真的过载。
第三板斧:kill 选对信号再动手
kill 不是“杀”,是“发信号”。kill 15(SIGTERM)是礼貌地请进程收拾好现场再退出,绝大多数情况用默认的就够;进程赖着不走再上 kill 9(SIGKILL)强制击毙——但它不给进程任何善后机会,数据库这类有状态服务慎用。杀完记得确认:ps -p PID 还在不在;若进程是被 systemd 管理的,用 systemctl restart 走正规流程更稳。
僵尸进程的收尾
如果 ps 里看到状态是 Z 的僵尸进程,kill 9 对它无效——僵尸已经死了,只是退出状态没人收。正确姿势是找到它的父进程:僵尸的父进程结束或重启后,僵尸会被 init 收养并清理。
小结
ps 快照找嫌疑人、top 直播看现场、kill 选信号再动手——三板斧的顺序别乱:先观察再动手,先 TERM 后 KILL,杀完必确认。把这套动作练成肌肉记忆,半夜 CPU 告警就没那么可怕。
- 点赞
- 收藏
- 关注作者
评论(0)