kill -9 都杀不掉的进程,是卡在 D 状态了
【摘要】 kill -9 失效的进程卡在不可中断睡眠 D 状态,多为 IO/NFS 引起,恢复通路才能唤醒。
kill -9 是最后的铁腕,但也有失效的时候:进程还在,状态列却卡在 D,什么信号都喂不进去。这不是权限问题——D 是 uninterruptible sleep(不可中断睡眠),这个状态下的进程不响应任何信号,9 号也一样。
D 状态的进程通常卡在系统调用上,最常见的是 IO:NFS 挂载点断了、磁盘抽风、存储设备假死。内核在等 IO 返回,返回之前进程就是不可打断的。
先确认:ps -eo pid,stat,wchan,cmd | grep ' D' 看 WCHAN 列,能大概看到卡在哪个内核函数;挂了 NFS 的机器,dmesg 里常有 nfs: server not responding 这类实锤。
处理分两步:存储通路断了引起的(NFS 最典型),先恢复网络和挂载点,进程大概率自己就醒了;实在不行 umount -l 懒卸载配合重启是最快路径。本机磁盘 IO 抽风的,等 IO 恢复即可,别跟 kill 较劲——信号在这个状态就是送不进去。
预防一句:挂 NFS 的时候加超时参数(soft、timeo,能接受数据风险的话),D 状态僵尸会少很多。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)