解析Linux操作系统僵尸进程[网络技术]
本文“解析Linux操作系统僵尸进程[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
具体解析Linux操作系统僵尸进程, 在fork()/execve()历程中,假定子进程完毕时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等候子进程完毕,又没有显式忽视该信号,则子进程成为僵尸进程,无法正常完毕,此时即便是root身份kill
在fork()/execve()历程中,假定子进程完毕时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等候子进程完毕,又没有显式忽视该信号,则子进程成为僵尸进程,无法正常完毕,此时即便是root身份kill-9也不能杀死僵尸进程.补偿办法是杀死僵尸进程的父进程(僵尸进程的父进程必定存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.
僵尸进程是指的父进程已经退出,而该进程dead之后没有进程承受,就成为僵尸进程.(zombie)进程
怎样产生僵尸进程的:
一个进程在调用exit号令完毕自己的生命的时刻,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据构造(系统调用exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完好销毁).在Linux进程的状况中,僵尸进程
是非常特别的一种,它已经放弃了几近全部内存空间,没有任何可履行代码,也不能被调度,仅仅在进程列表中保存一个位置,记录该进程的退
出状况等信息供其他进程汇集,除此之外,僵尸进程不再占据任何内存空间.它需求它的父进程来为它收尸,假如他的父进程没安装SIGCHLD信
号处理函数调用wait或waitpid()等候子进程完毕,又没有显式忽视该信号,那么它就一向保持僵尸状况,假如这时父进程完毕了,那么init进程自动
会接办这个子进程,为它收尸,它还是能被排除的.但是假如假如父进程是一个循环,不会完毕,那么子进程就会一向保持僵尸状况,这就是为什么系统中有时会有很多的僵尸进程.
怎么查看僵尸进程:
操纵号令ps,可以看到有标志为Z的进程就是僵尸进程.
怎样来排除僵尸进程:
1.改写父进程,在子进程死后要为它收尸.具体做法是接纳SIGCHLD信号.子进程死后,会发送SIGCHLD信号给父进程,父进程收到此信号后,履行waitpid()函数为子进程收尸.这是基于这样的原理:就算父进程没有调用wait,内核也会向它发送SIGCHLD消息,固然对的默许处理是忽视,假如想呼应这个消息,可以设置一个处理函数.
2.把父进程杀掉.父进程死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的全部僵尸进程也随着消逝.
===========================================
在Linux中可以用
ps auwx
发现僵尸进程
a all w/ tty, including other users 全部窗口和终端,包含其他用户的进程
u user-oriented 面向用户(用户友好)
-w,w wide output 宽格局输出
x processes w/o controlling ttys
在僵尸进程背面 会标注
ps axf
看进程树,以树形方法实际进程列表
ps axm
会把线程列出来,在linux下进程和线程是统一的,是轻量级进程的两种方法.
ps axu
显示进程的具体状况
===========================================
killall
kill -15
kill -9
普通都不能杀掉 defunct进程
用了kill -15,kill -9今后 之后反而会多出更多的僵尸进程
kill -kill pid
fuser -k pid
可以考虑杀死他的parent process,
kill -9 他的parent process
一个已经终止,但是其父进程还没有对其举行善后处理(获得终止子进程的有关信息、释放它仍占用的资源)的进程被称为僵死进程(Zombie Process).
本文引用地址: | 与您的QQ/MSN好友分享! |
[Linux]Linux改正时区不用重启的办法
[Linux]Fedora Linux 14 Alpha版下载
[Linux]让Linux系统有效防备ARP攻击
[Linux]linux改正指定用户的密码
[Linux]实例解析:找回丧失的Linux系统Grub密码
[Linux]linux中发出"滴"的怪声的办理筹划
[网站安全]比DDoS更变态的防备CC攻击安全技术解析
[Linux]LINUX下办理time_wait衔接过量
[Linux]linux限速脚本
以上是“解析Linux操作系统僵尸进程[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |