Linux运维实战:Linux清理僵尸进程
一、僵尸进程简介:
官方解释:当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。
一般在系统中僵尸进程的关键字为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清理僵尸进程相关推荐
- Linux运维实战:CentOS7.6操作系统从入门到精通(11-15)
第11章 重定向和文件的查找 第12章 磁盘介绍及管理 第13章 Linux文件系统结构 第14章 RAID的原理与搭建 第15章 LVM管理和SSM工具使用 Linux运维实战:CentOS7.6操 ...
- Linux运维实战|大文件切割
介绍 日常工作中需要对日志文件进行分析,当日志文件过大时,Linux中使用vim.cat.vim.grep.awk等这些工具对大文件日志进行分析将会成为梦魇,具体表现在: 执行速度缓慢,文件内容需要加 ...
- 《Linux运维实战:Centos7.6一键离线部署mongodb4.2.23副本集群》
一.部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的mongodb针对不同的客户环境需要多次部署,作为一个运维工程师,提升工作效率也是工作中的重要一环.所以 ...
- 老男孩linux运维实战培训中心讲师介绍
老男孩linux运维实战培训中心讲师介绍 老男孩,资深unix/Linux系统运维网站架构专家.高级运维总监.从事一线网站运维及系统架构管理10年以上,13年的教育教学培训经历(擅长教育心理,职业规划 ...
- 《Linux运维实战:使用openssl生成免费证书》
文章目录 一.背景 二.生成证书 2.1.证书格式为cer 2.2.证书格式为pem 三.Nginx配置 四.安装客户端证书 总结:整理不易,如果对你有帮助,可否点赞关注一下? 一.背景 由于第三方外 ...
- Linux运维实战:CentOS7.6操作系统从入门到精通(6-10)
第6章 CentOS用户管理 第7章 CentOS 7 文件权限管理 第8章 CentOS 7 程序包的管理与安装 第9章 文件的归档和压缩 第10章 CentOS 7 系统进程管理 Linux运维实 ...
- 《Linux运维实战:使用mongodump和mongorestore备份与恢复Mongodb数据》
一.备份与恢复方案 mongodump是MongoDB官方提供的备份工具,它可以从MongoDB数据库读取数据,并生成BSON文件,mongodump适合用于备份和恢复数据量较小的MongoDB数据库 ...
- linux运维视频教程 linux培训视频
马哥2016全套视频 linux运维视频教程 linux培训视频 http://edu.51cto.com/course/course_id-5524.html http://edu.51cto.co ...
- linux下伪终端的使用,Linux运维培训 Linux伪终端详解
原标题:Linux运维培训 Linux伪终端详解 Linux运维培训 Linux伪终端详解Linux学习绕不开一个名词"终端",对于新手来说可能不了解,对于老鸟来说,可能弄不大清楚 ...
最新文章
- hive导入导出数据案例
- springside地址
- ORA-00054 资源正忙,但指定以NOWAIT 方式获取资源,或者超时失效
- NAU8810相关问题
- hadoop fs –ls /hbase 无内容_Hadoop大数据实战系列文章之HDFS文件系统
- Ubuntu-16.04安装Xdebug-2.2.5及相关介绍
- 读后感Java多线程编程核心技术十二
- 51Nod 1109 01组成的N的倍数
- D3D11 自由视角相机
- bch verilog代码_BCH源码学习笔记 | 第一步:搭建BCH的源码学习环境
- 精益软件研发的秘密 IT大咖说 - 大咖干货,不再错过
- 把计算机过程描述,计算机解决问题的过程
- SNN识别手写数字—MNIST数据集
- メリッサ / 梅莉莎
- 用vue写轮子的一些心得(五)——Slides轮播组件
- SQL语句和sql函数
- LessonTableViewEdit
- GB2312编码一级汉字表
- ROS .bashrc笔记
- 调用openssl api函数C代码生成证书