遇到Linux僵尸进程该怎么办
在UNIX 体系中,一个进程完毕了,可是他的父进程没有等候(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()进程中,假设子进程完毕时父进程仍存在,而父进程fork()之前既没装置SIGCHLD信号处理函数调用 waitpid()等候子进程完毕,又没有显式疏忽该信号,则子进程成为僵尸进程。
一个进程在调用exit指令毕自己的生命的时分,其实它并没有真实的被毁掉, 而是留下一个称为僵尸进程(Zombie)的数据结构(体系调用exit,它的作用是 使进程退出,但也只是限于将一个正常的进程变成一个僵尸进程,并不能将其彻底毁掉)
进程的损害
由于子进程的完毕和父进程的运转是一个异步进程,即父进程永久无法预测子进程 究竟什么时分完毕. 那么会不会由于父进程太忙来不及wait子进程,或许说不知道 子进程什么时分完毕,而丢掉子进程完毕时的状况信息呢? 不会。由于UNⅨ供给了一种机制能够确保只需父进程想知道子进程完毕时的状况信息, 就能够得到。这种机制就是: 在每个进程退出的时分,内核开释该进程一切的资源,包含翻开的文件,占用的内存等。可是依然为其保存必定的信息(包含进程号the process ID,退出状况the termination status of the process,运转时刻the amount of CPU time taken by the process等)。直到父进程经过wait / waitpid来取时才开释. 但这样就导致了问题,如果进程不调用wait / waitpid的话,那么保存的那段信息就不会开释,其进程号就会一向被占用,可是体系所能运用的进程号是有限的,如果大量的发生僵死进程,将由于没有可用的进程号而导致体系不能发生新的进程. 此即为僵尸进程的损害,应当防止。
1、怎么检查僵尸进程?
怎么检查linux体系上的僵尸进程,怎么计算有多少僵尸进程?
仿制代码代码如下:
#ps -ef | grep defunct
或许查找状况为Z的进程,Z就是代表zombie process,僵尸进程的意思。
别的运用top指令检查时有一栏为S,如果状况为Z阐明它就是僵尸进程。
仿制代码代码如下:
Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
top指令中也计算了僵尸进程。或许运用下面的指令:
仿制代码代码如下:
ps -ef | grep defunct | grep -v grep | wc -l
2、怎么杀死僵尸进程?
一般僵尸进程很难直接kill掉,不过您能够kill僵尸爸爸。父进程身后,僵尸进程成为”孤儿进程”,过继给1号进程init,init始终会担任清理僵尸进程.它发生的一切僵尸进程也跟着消失。
仿制代码代码如下:
ps -e -o ppid,stat | grep Z | cut –d” ” -f2 | xargs kill -9
或
仿制代码代码如下:
kill -HUP `ps -A -ostat,ppid | grep -e ’^[Zz]‘ | awk ’{print $2}’`
当然您能够自己编写更好的shell脚本,欢迎与我们共享。
别的子进程身后,会发送SIGCHLD信号给父进程,父进程收到此信号后,履行waitpid()函数为子进程收尸。就是根据这样的原理:就算父进程没有调用wait,内核也会向它发送SIGCHLD音讯,而此刻,虽然对它的默许处理是疏忽,如果想响应这个音讯,能够设置一个处理函数。
3、怎么防止僵尸进程?
处理SIGCHLD信号并不是有必要的。但关于某些进程,特别是服务器进程往往在恳求到来时生成子进程处理恳求。如果父进程不等候子进程结 束,子进程将成为僵尸进程(zombie)然后占用体系资源。如果父进程等候子进程完毕,将添加父进程的担负,影响服务器进程的并发功能。在Linux下 能够简略地将 SIGCHLD信号的操作设为SIG_IGN。
signal(SIGCHLD,SIG_IGN);
这样,内核在子进程完毕时不会发生僵尸进程。这一点与BSD4不同,BSD4下有必要显式等候子进程完毕才干开释僵尸进程
或许
用两次fork(),并且使紧跟的子进程直接退出,是的孙子进程成为孤儿进程,然后init进程将担任铲除这个孤儿进程。
文章源自光环大数据官网:http://hadoop.aura.cn欢迎访问,转载需注明出处
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服!