原标题:Linux僵尸进程清除方法

今天给大家说一下Linux的僵尸进程,什么是僵尸进程呢?僵尸进程就是进程已经退出,但它的父亲进程还没有回收内核资源的进程为僵尸进程,即该进程在内核空间的 PCB(进程控制块) 没有释放,raksmart服务器。

以下是僵尸进程的示例程序,在此程序中,父进程让子进程退出但不处理,然后父进程调用 system 函数列出当前前台进程信息,代码如下:

#include

#include

#include

int main()

{

int pid;

if((pid = fork()) == -1)

perror("fork err");

else if(!pid){

exit(0);

}

sleep(1);

system("ps");

return 0;

}

运行结果如下:

红框的进程即为僵死状态。

怎样来清除僵尸进程:

1.改写父进程,在子进程死后要为它收尸。具体做法是接管SIGCHLD信号。子进程死后,会发送SIGCHLD信号给父进程,父进程收到此信号后,执行waitpid()函数为子进程收尸。

2.把父进程杀掉。父进程死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。

wait()与waitpid()

wait():

调用 wait() 函数的父亲进程将阻塞式等待该进程的任意一个子进程结束后,回收该子进程的内核进程资源。

waitpid():

waitpid()函数可以用来等待指定子进程(指定PID的子进程)结束。函数声明如下:

可以通过 /proc//maps 文件查看进程资源。返回搜狐,查看更多

责任编辑:

linux 进程 清理,Linux僵尸进程清除方法相关推荐

  1. linux僵尸进程理解,聊聊Linux系统中的僵尸进程

    车祸现场 今天下午,笔者正在认真搬砖,日志集群中有一台机器忽然报init进程占用100% CPU.strace之,发现疯狂输出如下系统调用. ~ strace -p 1 rt_sigprocmask( ...

  2. Linux进程实践(2) --僵尸进程与文件共享

    孤儿进程与僵尸进程 孤儿进程: 如果父进程先退出,子进程还没退出那么子进程的父进程将变为init进程.(注:任何一个进程都必须有父进程) //生成孤儿进程 int main(int argc, cha ...

  3. Linux查找并杀死僵尸进程

    1.查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程. 2.定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |gre ...

  4. JAVA项目linux僵尸进程_linux杀死僵尸进程

    ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9 1.查看系统是否有僵尸进程 使用Top命 ...

  5. 【k8s】理解Docker容器的进程管理(PID1进程(容器内kill命令无法杀死)、进程信号处理、僵尸进程)

    文章目录 概述 1. 容器的PID namespace(名空间) 2. 如何指明容器PID1进程 3. 进程信号处理 4. 孤儿进程与僵尸进程管理 5. 进程监控 6. 总结 参考 概述 简介: Do ...

  6. Linux系统中杀死僵尸进程的方法

    在linux系统管理中,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为defunct,这就是所谓的"僵尸"进程."僵尸"进程是一个早已 死亡的进程 ...

  7. 1进程 ppid_杀死僵尸进程,你需要这些神奇的Linux命令行

    Linux高手,其实都是玩儿命令行很熟练的人. 命令行的学习捷径 Linux命令有许多强大的功能:从简单的磁盘操作.文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行. 在Linux的 ...

  8. linux里面有mysql的僵尸进程_Linux的僵尸进程处理1

    Linux中有两种异常的进程: 1.孤儿进程:应用通过fork进程后,父进程被kill或者exit,该父进程的子进程被1号进程接管.linux内核启动时候回启动0号进程,启动完毕后0号进程就处于空闲状 ...

  9. Linux中如何杀掉僵尸进程

    1) 检查当前僵尸进程信息 # ps -ef | grep defunct | grep -v grep | wc -l 175 # top | head -2 top - 15:05:54 up 9 ...

  10. Linux用系统命令杀死僵尸进程

    1) 检查当前僵尸进程信息 # ps -ef | grep defunct | grep -v grep | wc -l 175 # top | head -2 top - 15:05:54 up 9 ...

最新文章

  1. spring YML属性提示
  2. etymon word write alb pain high alt increase large agency ag lose weight fat assist out~3
  3. Spring使用@Required注解依赖检查
  4. Python for i in range ()用法详解
  5. jquery插件 --- 图表 表格
  6. 如何用python画哆啦爱梦_python3 turtle 绘制哆啦A梦
  7. eigen3.3.8帮助文档下载 chm_惠普7500A驱动下载-惠普hp 7500A打印机驱动下载 v28.8官方版...
  8. redis 集群_Redis集群部署
  9. 解决win10学习汇编工具的烦恼——汇编masm的下载和使用(包含可用下载连接)
  10. FileZilla Server图文安装教程
  11. hcna华为认证网络工程师
  12. win10到优麒麟到深度系统
  13. 基于Linux的录像机:Neuros OSD
  14. 计算机工作的本质是什么?
  15. 网络流24题 最小路径覆盖(DCOJ8002)
  16. SQL中is not null和!=“ “的区别
  17. 京东历史价格查询的方法是?
  18. 2019,我的工作寻找之路
  19. 着色器Encoding floats to RGBA
  20. 世界坐标系和图像坐标系的对应关系

热门文章

  1. c语言数组可以强制转换,C语言数组访问及强制转换
  2. Office 检测到一个与此文件相关的问题为帮助保护您的计算机,无法打开此文件。
  3. 多元线性回归矩阵求导
  4. 第九届蓝桥杯国赛C++B组口胡题解
  5. 脉动风时程matlab程序,脉动风时程matlab程序.doc
  6. 网络安全系列-二十五: PCAP文件格式详解及读取PCAP文件源码示例
  7. 关于名为民间借贷实为诈骗案件的讨论
  8. ArcGIS多种面积计算方法的区别
  9. 4课:第一个单片机小程序 2020-11-15
  10. 字节跳动面试真题:2021新一波程序员跳槽季,系列篇