Linux如何杀掉僵尸进程(2)
Linux如何杀掉僵尸进程
从输出中可以看出,STAT列中的Z即为僵尸进程状态,或者使用awk命令根据Z进程状态进一步过滤输出:
ps ux | awk '{if($8=="Z") print}'
shubh 108 0.0 0.0 0 0 tty1 Z 16:25 0:00 [zombie] <defunct>
另一种方法是使用top命令:
top
Tasks: 8 total, 1 running, 6 sleeping, 0 stopped, 1 zombie
%Cpu(s): 0.7 us, 1.6 sy, 0.0 ni, 96.5 id, 0.0 wa, 1.2 hi, 0.0 si, 0.0 st
KiB Mem : 8269412 total, 3161228 free, 4878832 used, 229352 buff/cache
KiB Swap: 15483260 total, 14830144 free, 653116 used. 3256848 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 8936 192 148 S 0.0 0.0 0:00.17 init
8 root 20 0 8936 96 56 S 0.0 0.0 0:00.00 init
9 shubh 20 0 16916 2748 2640 S 0.0 0.0 0:00.43 bash
76 root 20 0 8936 224 184 S 0.0 0.0 0:00.00 init
77 shubh 20 0 16784 3432 3332 S 0.0 0.0 0:00.35 bash
161 shubh 20 0 0 0 0 Z 0.0 0.0 0:00.00 zombie
162 shubh 20 0 17624 2084 1508 R 0.0 0.0 0:00.00 top
top除了输出其他详细信息外,还可以在输出顶部的摘要中看到僵尸进程的数量。
2、清理僵尸进程
我们无法真正杀死僵尸进程,因为本身它已经结束了。但是,可以使用一些方法来清理僵尸进程。
2.1 使用 SIGCHLD 信号
可以手动向僵尸进程的父进程发送SIGCHLD信号。这样,父进程就会主动触发wait()系统调用,从而从进程表中清除已失效的子进程。
找到僵尸进程的父进程 PID:
ps -A -ostat,pid,ppid | grep -e '[zZ]'
Z 108 103
这里 108 表示僵尸进程 PID,103 表示其父进程 PID,接下来,可以使用kill命令向父进程发送SIGCHLD信号:
kill -s SIGCHLD 103
不过,并不能保证向父进程发送SIGCHLD信号就能杀死僵尸进程。只有在父进程可以处理SIGCHLD信号的情况下,它才会起作用。
2.2 kill 父过程
如果上一节的方法无法清除失效进程,就需要考虑杀死其父进程:
kill -9 103
但是,杀死父进程会影响其所有子进程。因此,应该格外谨慎,在杀死父进程之前必须确定其影响。
如果存在大量僵尸进程,或者僵尸进程的父进程是 init 进程(pid=1),可以考虑重启系统来清除失效进程。
以上IT袋网网介绍的Linux如何杀掉僵尸进程的详细方法介绍,大家作为一个参考建议。
相关阅读
-
uplay下载速度慢怎么办 Uplay下载速度慢一直为0
如果想了解Uplay下载速度慢一直为0的介绍,关于uplay下载速度慢怎么办 Uplay下载速度慢一直为0,一定能解决您的问题的,一起来了解吧! 不少的IT袋用户吐槽Uplay下载速度慢,还有Uplay平台下载
-
windows11桌面变成以前的教程
你是不是想知道windows11桌面变成以前的教程的话题,关于windows11桌面变成以前的教程,请看下面详细的介绍。 windows11系统对于桌面界面进行了调整,很多使用旧系统的朋友可能会使用起来不习
-
怎么在win10显示我的电脑 怎么在win10显示我的电脑桌面
关于这方面的知识你知道吗?怎么在win10显示我的电脑的电脑小知识,关于怎么在win10显示我的电脑 ,具体介绍如下: 在使用win10系统的时候,很多的用户发现我的电脑的图标不见了,很多的用
-
星球大战前线2win10闪退 win10星球大战2前线打开黑屏退出怎么办解决方
这些方法你知道吗?win10星球大战2前线打开黑屏退出怎么办解决方法的话题,关于星球大战前线2win10闪退 win10星球大战2前线打开黑屏退出怎么办解决方法,一起来了解了解吧。 最近很多的用户


