Linux如何杀掉僵尸进程
Linux如何杀掉僵尸进程
一篇关于Linux如何杀掉僵尸进程方面的知识,接下来一起来看看吧。
本文主要介绍Linux僵尸进程以及清理僵尸进程的方法。
1、什么是僵尸进程?
Linux中的僵尸进程(Zombie processes)有时也被称为失效或死亡进程。
它们是已执行完毕的进程,但其条目并未从进程表中删除。

1.1 进程状态
Linux 会维护一个进程表,其中包含所有正在运行的进程及其状态。
下面简要介绍一下各种进程状态:
(1)Running (R):表示这些进程目前正在运行或可运行,用字母R表示。需要说明:进程是R状态,不代表正在运行,代表可被调度。换句话说,进程只有是R状态才可被调度,其他状态要先转为R状态,才能被 OS 调度;
(2)Waiting (S/D):表示这些进程正在等待事件完成或某种资源就绪,用字母S/D表示,等待可以是可中断休眠S(interruptible sleep) 或不中断休眠D(uninterruptible sleep);
(3)Stopped (T):可以通过发送SIGSTOP信号给进程来停止(T)进程。这个被暂停的进程可以通过发送SIGCONT信号让进程继续运行。
(4)Zombie (Z):一个比较特殊的状态。当子进程退出并且父进程没有读取到子进程退出的返回代码时,就会产生僵死(尸)进程。僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。
1.2 僵尸进程是如何产生的?
当一个进程完成其工作时,Linux 内核会通过发送SIGCHLD信号通知其父进程。然后,父进程执行wait()系统调用,读取子进程的状态并读取其退出代码。这会清除进程表中子进程条目,从而结束进程。
但是,如果父进程没有在创建子进程时执行wait()系统调用,就不会进行适当的清理。在这种情况下,父进程无法监控子进程的状态变化,最终会忽略SIGCHLD信号。这将导致已完成进程的僵尸状态留在进程表中,从而使其作为僵尸进程出现在进程列表中。
另一种情况是,父进程无法处理或接收来自子进程的SIGCHLD信号,这种情况也会导致僵尸的产生。
1.3 搜索僵尸进程
使用ps命令来检索僵尸进程列表:
ps ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
shubh 9 0.0 0.0 16916 2760 tty1 S Dec19 0:00 /bin/bash --login
shubh 108 0.0 0.0 0 0 tty1 Z 16:25 0:00 [zombie] <defunct>
shubh 109 0.0 0.0 17384 1928 tty2 R 16:25 0:00 ps ux
相关阅读
-
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前线打开黑屏退出怎么办解决方法,一起来了解了解吧。 最近很多的用户


