Linux系统寻找和杀掉僵尸进程

简介:

vim zombie.c

---------------------------

#include <stdio.h>


#include <unistd.h>

#include <errno.h>

#include <stdlib.h>


int main()

{


int i;


pid_t pid;

for (i = 0; i < 10; ++i)

{


pid = fork();

switch(pid)

{

case -1:

perror("fork");

exit(-1);

case 0: //child

printf("I am child");

exit(0);


default:

break;


}

}


while (1)

{

sleep(1);


printf("I am parent\n");


}

return 0; //will never reach here


}

-----------------------------------------------

这段程序就可以产生10个僵尸进程,编译执行后ps -ef查看,<defunct>就表示僵尸进程。原理是产生子进程之后它只打印一句话就退出,而父进程最终进入while无限循环,所以不退出,并且它没有调用wait()或者waitpid()函数清理子进程,所以子进程全部成为僵尸进程;如果父进程退出,那么不会产生僵尸进程,因为子进程被过继给1号进程(init进程),init进程负责清理子进程。



编译生成zombie文件,并运行zombie

gcc -o zombie zombie.c

./zombie


查出僵尸进程:

top

ps -e -o stat,ppid|grep -e '^[Zz]'



杀死僵尸进程:

kill -HUP `ps -e -o stat,ppid|grep -e '^[Zz]'|awk '{print $2}'|sort|uniq`















本文转自leonardos51CTO博客,原文链接: http://blog.51cto.com/leomars/1888777,如需转载请自行联系原作者



相关文章
|
6天前
|
Ubuntu 安全 Linux
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
38 1
|
1天前
|
监控 安全 Linux
Linux系统之安装ServerBee服务器监控工具
【4月更文挑战第22天】Linux系统之安装ServerBee服务器监控工具
39 2
|
1天前
|
缓存 Linux
linux系统缓存机制
linux系统缓存机制
|
1天前
|
NoSQL Linux 程序员
【linux进程信号(一)】信号的概念以及产生信号的方式
【linux进程信号(一)】信号的概念以及产生信号的方式
|
1天前
|
Linux
【linux进程间通信(一)】匿名管道和命名管道
【linux进程间通信(一)】匿名管道和命名管道
|
1天前
|
Java Shell Linux
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
|
1天前
|
算法 Linux Shell
【linux进程(二)】如何创建子进程?--fork函数深度剖析
【linux进程(二)】如何创建子进程?--fork函数深度剖析
|
1天前
|
存储 Linux Shell
【linux进程(一)】深入理解进程概念--什么是进程?PCB的底层是什么?
【linux进程(一)】深入理解进程概念--什么是进程?PCB的底层是什么?
|
2天前
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
16 0
|
2天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
4 0