云服务器Linux进程卡死处理流程(优先温柔终止,最后强制杀)
云服务器Linux进程卡死处理流程(优先温柔终止,最后强制杀)
重要提醒:kill -9 是最后的手段,它不给进程保存、刷盘、关闭连接的机会,数据库、Redis、业务写入进程直接 -9 极易丢数据、文件损坏。
云服务器详细介绍:https://act.tag.org.cn
一、第一步:定位卡死进程,拿到PID
实时看CPU/内存占用,top里按P按CPU排序、M按内存排序
top
查找进程PID(推荐)
ps aux | grep 进程名
pgrep 进程名
pidof 进程名
查看进程状态(重点看STAT那一列)
ps -ef | grep PID
ps -o pid,ppid,stat,cmd -p PID
状态说明:
S:睡眠,正常R:运行Z:僵尸进程(defunct),kill -9 杀不掉它本身,要杀父进程PPIDD:不可中断睡眠(IO卡死,磁盘/NFS挂死),很多时候 kill -9也无效,需要处理底层IO问题

二、第二步:先优雅终止(SIGTERM 信号15)
kill PID
等价 kill -15 PID
作用:通知进程自行收尾、保存数据、释放资源后退出,线上优先这个。
等待3~10秒,再用 ps 检查进程是否还在。
三、第三步:强制终止(SIGKILL 信号9,万不得已再用)
指定PID精准强杀(最推荐,不容易误杀)
kill -9 PID
按进程名批量强制杀(慎用!会杀掉同名全部进程)
killall:精确匹配进程名
killall -9 进程名
pkill:模糊匹配,更容易误杀,谨慎
pkill -9 进程关键词
端口占用卡死,直接杀占用端口进程
查找占用8080端口PID
lsof -i :8080
直接杀掉该端口所有进程
fuser -k 8080/tcp
四、两种特殊杀不掉的场景
1)Z 僵尸进程(defunct)
僵尸进程本身已经死掉,只是父进程没有回收,给僵尸PID发kill/-9完全无效
查到僵尸的父进程PPID
ps -o ppid -p 僵尸PID
重启/杀掉父进程,systemd会自动回收僵尸
kill PPID
服务类优先用systemctl重启,而不是直接杀父进程
systemctl restart xxx
2)D 不可中断IO进程(磁盘卡死、NFS挂载挂死)
D状态是进程在内核IO等待,内核不会响应SIGKILL,kill -9 看着执行成功,进程还在:
排查命令:
看磁盘IO
iostat -xz 1
看内核报错
dmesg -T | tail
查看进程卡在哪个IO
cat /proc/PID/wchan
处理方案:
- NFS卡死:
umount -l /mnt/nfs延迟卸载挂载点 - 磁盘硬件/文件系统故障:备份数据,必要时重启服务器
- 云盘异常:去云服务商控制台看磁盘状态
五、服务进程优先使用systemctl(比kill规范)
优雅停止
systemctl stop nginx
停止卡住,强制杀完再重启
systemctl kill -s KILL nginx
systemctl restart nginx
六、服务器整体卡死、SSH连不上的兜底方案
- 云服务商后台 → VNC/控制台登录(不要依赖SSH)
- VNC内执行上面命令
- VNC也卡:云服务器控制台强制重启实例(最后兜底,业务会中断)
七、信号速查表
| 命令 | 信号 | 说明 |
| kill PID | 15 SIGTERM | 优雅退出,优先使用 |
| kill -9 PID | 9 SIGKILL | 内核强制干掉,无清理,慎用 |
| kill -1 PID | 1 SIGHUP | 重载配置(很多服务支持) |
| kill -2 PID | 2 SIGINT | 等价 Ctrl+C |
实操示例
1. 找到java卡死进程PID
pgrep java
返回 12345
2. 先优雅关闭
kill 12345
sleep 5
3. 还存在,强制杀
kill -9 12345

云服务器Linux进程卡死处理流程(优先温柔终止,最后强制杀)
> 重要提醒:kill -9 是最后的手段,它不给进程保存、刷盘、关闭连接的机会,数据库、Redis、业务写入进程直接 -9 极易丢数据、文件损坏。
浙公网安备 33010602011771号