linux对于zombie的处理

@(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
这样僵尸进程就可能被完全杀掉了。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值