unix怎么看一个进程是不是僵死的

unix怎么看一个进程是不是僵死的,第1张

利用命令ps,可以看到有标记为Z的进程就是僵尸进程。

显示Zombie状态进程

ps -eo state,pid,cmd | grep '^Z'

进程状态主要有:

R(运行中)

S(睡眠中,可中断)

D(睡眠中,不可中断)

T(暂停或被追踪)

X( 已退出,即将被销毁)

Z(已退出,成为僵尸进程)

p

s列出的进程状态在S那一栏,ps的用法详见man手册

怎样来清除僵尸进程:

1.改写父进程,在子进程死后要为它收尸。具体做法是接管SIGCHLD信号。子进程死后,会发送SIGCHLD信号庆旅给父进程大手,父进程收到此信号后,执行waitpid()函数为子进程收尸。这是基于这样的原理:就算父进程没有调用wait,内核也会向它发送SIGCHLD消滚差嫌息,尽管对的默认处理是忽略,如果想响应这个消息,可以设置一个处理函数。

2.把父进程杀掉。父进程死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。

因为没有指出是什么系统,我这里回答一下Linux下如何通过ps命令来查看僵尸郑早进程:

ps的帮助文档中有指出,僵尸进程会被标记为defunct。

Processes 碰行marked <defunct> are dead processes (so-called "zombies") that remain

 because their parent has not destroyed them properly. 笑丛哗

  These processes will be destroyed by init(8) if the parent process exits.

所以通过下面命令可以查找出僵尸进程:

ps aux | grep defunct

僵尸进程也就是Zombie进程,在Ubuntu系统中,要如何查找和杀死僵尸进程呢?随我一起局此来了解下吧。查找Zombie进程首先,当桌面程序卡死的时候,你可以尝试进入其他tty终端。切换方式:ctrl + alt + [1,2,3,4,5,6,7],7是桌面终端其次,你可以使用top命令查看当前是否有Zombie进程从上图可以看到僵尸进程数,num zombie,num大于0,则代表系统存在僵尸进程最后,利用ps命令查找Zombie进圆腊袭程ps -A -ostat,ppid,pid,cmd | grep -e ‘^[zZ]’示例 :具体参数解释可以通过man来自己学习杀死Zombie进程直接kill -9 Zombiepid是没有作用的,原因是:Zombie表示进程已经退出,想要清理这样的进程,需要清除其父进程或者等很长时间后内核将其清除kill -HUP ppid上面就是Ubuntu查杀僵尸进橘兄程的方法介绍了,通过本文介绍的方法就能将僵尸进程去除,及时没有彻底清除,也不影响系统的运行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12241873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存