一、僵尸进程简介:

官方解释:当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。

一般在系统中僵尸进程的关键字为defunct或者dead,僵尸进程一般指进程已经死了或者已经停止运行了,但是它仍存在与进程列表中。理想状态下,进程在执行完毕后应该直接释放资源,从进程表中退出,但是由于某些原因,父进程没有读取到子进程的完成状态,父进程就不会回收子进程占用的资源,导致子进程一直存在于进程列表中。

二、如何辨别僵尸进程呢?

通过如下命令:
ps aux | egrep “Z|defunct”

Z标识符在STAT列中,defunct标识符在输出的最后一列中,通过这两个标识符可以确认系统中的僵尸进程。

现在我们还不能直接kill僵尸进程,我们最好唤起父进程,让父进程重新尝试读取僵尸进程的状态,最终由父进程清理僵尸进程,这是最好的处理方法,我们现在需要获取父进程的ID,如下:

ps -o ppid=

三、 如何清理僵尸进程呢?

我们获取了父进程的ID号,我们可以通过如下命令向父进程发送一个信号:

kill -s SIGCHLD

有些时候该命令可能不起作用,那么我们可以直接Kill父进程。

kill -9

TIPS:将父进程kill掉,将影响所有归属的子进程,准备kill之前,我们需要双重检查以便制造出更多令人忧虑的麻烦。如果系统存在很少的僵尸进程,同时也没有占用更多的系统资源,最好的方法是在下一次的系统维护计划中kill父进程。

四、如何快速创建测试僵尸进程呢?

小A:如果系统没有僵尸进程怎么办呢?

大B:那…

大B:那就创造僵尸进程吧!

使用C语言的fork函数可以快速打造出一个僵尸进程:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <linux/wait.h>
int main(int argc,char **argv)
{int i=0;pid_t pid=fork();if(pid==-1) return 0;else if(pid==0){printf("son pid is %d
",getpid());while(1){printf("son---i=%d
",i);i++;sleep(1);if(i==5)break;}printf("son is over!
");}else if(pid>0){printf("parent pid is %d
",getpid());while(1) sleep(100);}return 0;}

在系统中创建js.c文件,将代码贴进去。

然后:

gcc -o jsjs.c \编译

./js \执行

查看自己创造的僵尸进程:

后续就可以尝试清理僵尸进程啦。

Linux运维实战:Linux清理僵尸进程相关推荐

  1. Linux运维实战:CentOS7.6操作系统从入门到精通(11-15)

    第11章 重定向和文件的查找 第12章 磁盘介绍及管理 第13章 Linux文件系统结构 第14章 RAID的原理与搭建 第15章 LVM管理和SSM工具使用 Linux运维实战:CentOS7.6操 ...

  2. Linux运维实战|大文件切割

    介绍 日常工作中需要对日志文件进行分析,当日志文件过大时,Linux中使用vim.cat.vim.grep.awk等这些工具对大文件日志进行分析将会成为梦魇,具体表现在: 执行速度缓慢,文件内容需要加 ...

  3. 《Linux运维实战:Centos7.6一键离线部署mongodb4.2.23副本集群》

    一.部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的mongodb针对不同的客户环境需要多次部署,作为一个运维工程师,提升工作效率也是工作中的重要一环.所以 ...

  4. 老男孩linux运维实战培训中心讲师介绍

    老男孩linux运维实战培训中心讲师介绍 老男孩,资深unix/Linux系统运维网站架构专家.高级运维总监.从事一线网站运维及系统架构管理10年以上,13年的教育教学培训经历(擅长教育心理,职业规划 ...

  5. 《Linux运维实战:使用openssl生成免费证书》

    文章目录 一.背景 二.生成证书 2.1.证书格式为cer 2.2.证书格式为pem 三.Nginx配置 四.安装客户端证书 总结:整理不易,如果对你有帮助,可否点赞关注一下? 一.背景 由于第三方外 ...

  6. Linux运维实战:CentOS7.6操作系统从入门到精通(6-10)

    第6章 CentOS用户管理 第7章 CentOS 7 文件权限管理 第8章 CentOS 7 程序包的管理与安装 第9章 文件的归档和压缩 第10章 CentOS 7 系统进程管理 Linux运维实 ...

  7. 《Linux运维实战:使用mongodump和mongorestore备份与恢复Mongodb数据》

    一.备份与恢复方案 mongodump是MongoDB官方提供的备份工具,它可以从MongoDB数据库读取数据,并生成BSON文件,mongodump适合用于备份和恢复数据量较小的MongoDB数据库 ...

  8. linux运维视频教程 linux培训视频

    马哥2016全套视频 linux运维视频教程 linux培训视频 http://edu.51cto.com/course/course_id-5524.html http://edu.51cto.co ...

  9. linux下伪终端的使用,Linux运维培训 Linux伪终端详解

    原标题:Linux运维培训 Linux伪终端详解 Linux运维培训 Linux伪终端详解Linux学习绕不开一个名词"终端",对于新手来说可能不了解,对于老鸟来说,可能弄不大清楚 ...

最新文章

  1. hive导入导出数据案例
  2. springside地址
  3. ORA-00054 资源正忙,但指定以NOWAIT 方式获取资源,或者超时失效
  4. NAU8810相关问题
  5. hadoop fs –ls /hbase 无内容_Hadoop大数据实战系列文章之HDFS文件系统
  6. Ubuntu-16.04安装Xdebug-2.2.5及相关介绍
  7. 读后感Java多线程编程核心技术十二
  8. 51Nod 1109 01组成的N的倍数
  9. D3D11 自由视角相机
  10. bch verilog代码_BCH源码学习笔记 | 第一步:搭建BCH的源码学习环境
  11. 精益软件研发的秘密 IT大咖说 - 大咖干货,不再错过
  12. 把计算机过程描述,计算机解决问题的过程
  13. SNN识别手写数字—MNIST数据集
  14. メリッサ / 梅莉莎
  15. 用vue写轮子的一些心得(五)——Slides轮播组件
  16. SQL语句和sql函数
  17. LessonTableViewEdit
  18. GB2312编码一级汉字表
  19. ROS .bashrc笔记
  20. 调用openssl api函数C代码生成证书

热门文章

  1. Oracle数据库基础(一)
  2. vue工程代码优化:新建utils文件夹统一管理工具函数
  3. vue 的 MD5 加密细节
  4. python编程语言汇总-Python技术之书籍汇总
  5. 弹性布局换行左对齐(justify-content: space-between)
  6. 读《零成本创业》-黄永宏 (2)
  7. sketchup笔记
  8. Unity 3d地形系统自定义画笔
  9. Kakao旗下两家公司合并,将诞生韩国娱乐巨头
  10. IntelliJ IDEA 快捷键说明大全(官方help文档翻译)