zoukankan      html  css  js  c++  java
  • linux处理僵尸进程

    使用top查看服务器负载的时候,发现了zombie(简单理解成僵尸吧)这个参数

    这个参数就代表僵尸进程的含义,什么是僵尸进程呢?(这里盗用一下官方的解释)

       一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit, 它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。  
       在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位 置,记载该进程的退出状态等信息供其他进程收集。除此之外,僵尸进程不再占有任何内存空间。它需要它的父进程来为它收尸,如果他的父进程没安装 SIGCHLD 信号处理函数调用wait或waitpid()等待子进程结束,又没有显式忽略该信号,那么它就一直保持僵尸状态,如果这时父进程结束了, 那么init进程自动会接手这个子进程,为它收尸,它还是能被清除的。但是如果如果父进程是一个循环,不会结束,那么子进程就会一直保持僵尸状态,这就是 为什么系统中有时会有很多的僵尸进程。
    

    如何找到僵尸进程的相关信息呢?

    1. ps -e -o stat,ppid,pid,cmd|egrep '^[Zz]'
    
    ps:ps命令用于获取当前系统的进程信息.
    
    -e:参数用于列出所有的进程
    
    -o:参数用于设定输出格式,这里只输出进程的stat(状态信息)、ppid(父进程pid)、pid(当前进程的pid),cmd(即进程的可执行文件。
    
    egrep:是linux下的正则表达式工具
    
    '^[Zz]':这是正则表达式,^表示第一个字符的位置,[Zz],表示z或者大写的Z字母,即表示第一个字符为Z或者z开头的进程数据,只所以这样是因为僵尸进程的状态信息以Z或者z字母开头。
    
    2.    ps -ef | grep "defunct" 
    

    大多数linux系统,也会将僵尸进程标识为defunct

    找到之后,就可以通过kill -9来终止父线程了(记得是父线程)。
    ————————————————
    版权声明:本文为CSDN博主「大大、酥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_39597203/article/details/79499682

  • 相关阅读:
    metasploit--multi/samba/usermap_script
    msfcli 不能使用,在新版metasploit不再有效,推荐使用msfconsole
    test.fire渗透测试
    metasploit服务扫描与查点
    Synchronized底层实现
    正在使用的IDEA插件
    JavaWeb
    设计模式
    MySQL
    计算机网络
  • 原文地址:https://www.cnblogs.com/fb010001/p/15029695.html
Copyright © 2011-2022 走看看