@(Linux基础)[僵尸进程处理]
今天在服务器上推送项目的时候,突然发现很卡。就用top查看了一下,果然此事不简单啊。

top - 10:39:16 up 20 days, 23:11,  2 users,  load average: 1.13, 1.09, 1.03
Tasks: 204 total,   2 running, 196 sleeping,   1 stopped,   5 zombie
Cpu(s): 22.2%us,  1.9%sy,  0.0%ni, 73.2%id,  1.6%wa,  0.0%hi,  0.0%si,  1.2%st
Mem:   6122764k total,  5311160k used,   811604k free,   785232k buffers
Swap:  2046972k total,   168792k used,  1878180k free,  2787720k cachedPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18715 root      20   0  245m  58m 6692 R 31.3  1.0   0:00.94 python
21231 root      20   0  538m  96m 7180 S  1.0  1.6 208:55.76 gunicorn
21237 root      20   0  538m  96m 7272 S  1.0  1.6 208:47.87 gunicorn
21229 root      20   0  539m  97m 7352 S  0.7  1.6 208:57.03 gunicorn
21240 root      20   0  539m  96m 7368 S  0.7  1.6 208:42.90 gunicorn                                             2239 rabbitmq  20   0 3768m  69m 2764 S  0.3  1.2  46:00.09 beam.smp
18681 root      20   0 17172 1364  964 R  0.3  0.0   0:00.01 top
18724 root      20   0  121m 7448 5320 S  0.3  0.1   0:00.01 nginx                                                1 root      20   0 21404 1064  848 S  0.0  0.0   0:02.10 init                                                 2 root      20   0     0    0    0 S  0.0  0.0   0:00.02 kthreadd                                             

注意:zombie 僵尸进程而且还是5个。
此时此刻,只想说这些这帮人捣乱玩。
解决办法:
在linux中,利用命令ps,可以看到有标记为Z的进程就是僵尸进程。

ps -ef|grep defunc可以找出僵尸进程.

可以用ps的-l选项,得到更详细的进程信息. F(Flag):一系列数字的和,表示进程的当前状态。这些数字的含义为:

00:若单独显示,表示此进程已被终止。01:进程是核心进程的一部分,常驻于系统主存。如:sched、 vhand 、bdflush 等。02:Parent is tracing process.04:Tracing parent’s signal has stopped the process; the parent is waiting ( ptrace(S)).10:进程在优先级低于或等于25时,进入休眠状态,而且不能用信号唤醒,例如在等待一个inode被创建时   20:进程被装入主存(primary memory)40:进程被锁在主存,在事务完成前不能被置换S(state of the process )O:进程正在处理器运行 S:休眠状态(sleeping)R:等待运行(runable)   I:空闲状态(idle)Z:僵尸状态(zombie)   T:跟踪状态(Traced)B:进程正在等待更多的内存页C:cpu利用率的估算值(cpu usage)

处理僵尸进程

kill -18 PPID (PPID是其父进程)

 这个信号是告诉父进程,该子进程已经死亡了,请收回分配给他的资源。
 SIGCONT也是一个有意思的信号。如前所述,当进程停止的时候,这个信号用来告诉进程恢复运行。该信号的有趣的地方在于:它不能被忽略或阻塞,但可以被捕获。缺省行为是丢弃该信号。
终止父进程
 如果方法2不能终止,可采用终止其父进程的方法(如果其父进程不需要的话)父进程死后,僵尸进程成为”孤儿进程”,过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。
先看其父进程又无其他子进程,如果有,可能需要先kill其他子进程,也就是兄弟进程。方法是:

  kill –15 PID1 PID2 (PID1,PID2是僵尸进程的父进程的其它子进程)。

然后再kill父进程:kill –15 PPID
这样僵尸进程就可能被完全杀掉了。

转载于:https://www.cnblogs.com/xiaogongzi/p/9081706.html

linux对于zombie的处理相关推荐

  1. linux 查看zombie进程

    1:top命令 查看进程: # top 2:查看具体是哪个进程: linux:~ # ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]" Z   ...

  2. linux 关闭zombie进程

    # 查看当前的僵尸进程 ps aux | grep -w Z # 查看僵尸进程的父进程 ps -xal #杀死僵尸进程 kill -9 $(ps -A -ostat,ppid | grep -e '[ ...

  3. linux下的僵尸进程 - Zombie

    在linux中你可能进程听到有僵尸进程,那么究竟什么是僵尸进程,他又是怎样产生的呢?下面我们通过1个例子来说明一下. 我们知道退出一个进程用系统调用exit, 但是这并不意味着该进程马上就消失了,事实 ...

  4. linux僵尸程序,什么是僵尸进程(zombie)?

    僵尸进程是指一个已经终止.但是其父进程尚未对其进行善后处理获取终止进程的有关信息的进程,这个进程被称为"僵尸进程"(zombie). 怎样产生僵尸进程 一个进程在调用exit命令结 ...

  5. linux进程q是什么意思,Linux zombie进程

    在Linux进程的5种状态:(选自<深入理解Linux内核>) 1. 可运行(正在运行或在运行队列中等待) 2. 可中断的等待(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. ...

  6. 查询php僵死进程,linux查找僵尸进程(zombie进程)

    首先,我们可以用top命令来查看服务器当前是否有僵尸进程,可以看到第二行行尾有个 0 zombie,如果数字大于0,那么意味着服务器当前存在有僵尸进程 可以用ps和grep命令寻找僵尸进程 ps -A ...

  7. linux defunct 进程,Linux僵尸进程(Zombie or defunct)

    僵尸进程(Zombie or defunct)关于Linux僵尸进程,一般是由于子进程结束的时候,会有一些资源没有释放掉,直到父进程结束或者由父进程去处理它才可以! www.cit.cn 僵尸进程就是 ...

  8. Linux:僵尸进程 Zombie;waitpid

    文章目录 参考 僵尸进程的表象 出现僵尸进程的情况 一种产生Coredump,而磁盘空间不够用 一种父进程未有waitpid回收子进程 僵尸进程的影响 system 函数调用执行的子进程 waitpi ...

  9. 【Linux 僵尸进程查杀】 Linux 进程查看,查杀,查询,查询用户归属,stopped、zombie查杀

    一.用top能够查看僵尸进程数量 二.自动查杀 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill ...

最新文章

  1. jQuery(一)引入
  2. vue-ueditor 后端配置项没有正常加载_揭秘Gannt后端集成问题该如何解决
  3. 报告软件测试错误的规范
  4. 8 Django 模型层(2)
  5. OSI协议和TCP/IP协议笔记
  6. ORA-00257: archiver error. Connect internal only, until freed
  7. poj 2886 Who Gets the Most Candies?(线段树)
  8. spring框架mvc框架_Spring的MVC测试框架入门–第1部分
  9. CSS3动画 - 图片开关灯阴影动画
  10. 如何做一个内心强大的人
  11. oracle 登录dba,在Oracle10gisqlplus下登录dba用户
  12. Nacos教程_4 配置讲解
  13. Python: str.split()和re.split()的区别
  14. 什么是微信62数据?微信62数据原理解读
  15. Python下载和安装图文教程[超详细]
  16. 使用 MATLAB Coder App 生成 C 代码
  17. Bus error的调试解决方法
  18. JAVA实现接入企业微信报警
  19. 计算机网络技术的研究现状,计算机网络技术发展研究
  20. runtime错误c语言,c,runtime_为什么这样的代码会出现RUNTIME ERROR?,c,runtime - phpStudy...

热门文章

  1. 使用JDBC连接数据库(MySQL)的源代码
  2. 人生永无止境的意思是什么_励志人生:生活不会给任何脆弱鼓掌。
  3. c语言中dfs用pos做参数,LeetCode算法练习——深度优先搜索 DFS(2)
  4. js find的用法_React常用库Immutable.js常用API
  5. 巧解C语言运算符的优先级和结合性
  6. 7个C语言小程序让你快速入门程序世界
  7. 计算机课实验三,成都信息工程学院计算机网络课程实验三
  8. 与计算机相关的社团活动,计算机社团活动记录.doc
  9. python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...
  10. return两个返回值_LeetCode 第四题 寻找两个有序数组的中位数