@(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 cached PID 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

这样僵尸进程就可能被完全杀掉了。

最新文章

  1. 最新版 chrome 33中,backgroundPosition 改了.
  2. jquery 触发/失去焦点事件例子详解
  3. 总结的一些网站利于搜索引擎优化的小常识及SEO优化
  4. iptables 详解
  5. contentProvider模板
  6. DIV焦点事件
  7. MVC项目发布IIS访问不了
  8. csharp .net vb 复制图像
  9. 理解WebKit和Chromium: Chromium插件和扩展基础
  10. HTTP2和HTTPS来不来了解一下?
  11. Kali学习笔记4:DNS信息收集
  12. Ext.js项目(二)
  13. error: style attribute '@android:attr/windowEnterAnimation' not found.
  14. 强化学习7-Sarsa
  15. EXPLAIN执行计划中要重点关注哪些要素
  16. javaweb项目中遇到的一些乱码问题
  17. KahaDB简介
  18. Spring-boot 启动完成时执行指定任务
  19. 【Hadoop】mapreduce采用多进程与spark采用多线程比较
  20. try catch finally的执行顺序

热门文章

  1. Requests接口测试(四)
  2. Controller级别的异常处理过滤器IExceptionFilter
  3. 20169219 实验二 Java面向对象程序设计
  4. springMVC工作原理趣味解析
  5. screen工具
  6. DataGridView自定义行样式和行标题
  7. 所谓IIS未注册引起的故障及解决
  8. pdo + 事务处理 处理线性事务
  9. 2018数学建模国赛总结(A题/编程选手视角)
  10. Balance(Stack)