僵死进程

1. 产生的原因

一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵死进程。

2. Linux系统中如何查看是否有僵死进程

通过命令ps -el,再查看第二列,是否有标志为Z的进程,如果有,则表示该进程是僵死进程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJIGwIZc-1595231860441)(./1592559880189.png)]
图1:ps命令后的结果图。

3. 如何杀死僵死进程

僵死进程用kill -9命令是杀不掉的,只能通过杀死其父进程来杀死它(当然重启服务器也是可以的)。

先通过僵死进程的PID找到其父进程的PID,也叫PPID。再通过kill -2 PPID杀掉父进程。如果kill -2杀不掉,则先杀掉父进程的其它子进程(如果有),再kill -9 PPID

  • 找父进程
    ps -ef | grep PID

  • 如父进程没其它子进程
    kill -9 PPID

  • 如有其它子进程,千万别直接把父进程干了,不然这些子进程就都变成了孤儿进程,具体影响看实现。
    ps -ef | grep PPID (找到所有子进程,然后一个一个杀掉)

一般来说,通过kill -2 PPID是可以将父子进程都干掉的,如nginx的master进程会fork很多worker进程,你用kill -2杀掉master进程时,worker进程也会一起被杀掉。但如果你直接通过kill -9把master干掉了,那这些worker进程就成了孤儿进程了,虽然仍可以正常处理请求工作,但后续配置变更等都将无效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值