首页 > 系统相关 >Linux中产生zombie的原因详解及解决方法!

Linux中产生zombie的原因详解及解决方法!

时间:2023-02-20 16:04:24浏览次数:32  
标签:fork 结束 僵尸 zombie init 详解 Linux 进程

  zombie英文全称是zombie process,中文名为僵尸进程,也就是死掉的进程,那么Linux中产生zombie的原因是什么?具体内容请看下文。

  僵尸进程,英文名zombie process,顾名思义就是死掉的进程。

  僵尸进程产生的原因就是父进程产生子进程后,子进程先于父进程退出,但是父进程由于种种原因,并没有处理子进程发送的退出信号,那么这个子进程就会成为僵尸进程。

  这个是所谓的zombie是指在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill-9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程,僵尸进程成为孤儿进程,过继给1号进程init,init始终会负责清理僵尸进程。

  僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程

  解决方法:

  1、父进程通过wait和waitpid等函数等待子进程结束,这会导致父进程挂起。执行wait()或waitpid()系统调用,则子进程在终止后会立即把它在进程表中的数据返回给父进程,此时系统会立即删除该进入点。在这种情形下就不会产生defunct进程。

  2、如果父进程很忙,那么可以用signal函数为SIGCHLD安装handler。在子进程结束后,父进程会收到该信号,可以在handler中调用wait回收。

  3、如果父进程不关心重点内容子进程什么时候结束,那么可以用signal(SIGCLD, SIG_IGN)或signal(SIGCHLD, SIG_IGN)通知内核,自己对子进程的结束不感兴趣,那么子进程结束后,内核会回收,并不再给父进程发送信号。

  4、fork两次,父进程fork一个子进程,然后继续工作,子进程fork一个孙进程后退出,那么孙进程被init接管,孙进程结束后,init会回收。不过子进程的回收还要自己做。

标签:fork,结束,僵尸,zombie,init,详解,Linux,进程
From: https://blog.51cto.com/u_14661964/6068621

相关文章

  • nginx 注册Linux 开机启动
    nginx注册Linux开机启动前提已经安装好了,nginx(查看之前的文章) cd  /usr/lib/systemd/system/[root@machine138keepalived]#cd/usr/lib/systemd/system/[r......
  • vue 配置【详解】 vue.config.js ( 含 webpack 配置 )【转载】
    使用 vue-cli3.x以上的脚手架创建的vue项目不再有build文件夹,若需要进行相关配置,需在项目目录下新建文件 vue.config.js常用配置1//后端服务器地址2letur......
  • linux编译安装gcc5.3.0
    1、下载GCC5.3.0安装包#su#cd/opt#wgethttp://ftp.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.gz2、解压#tar-zxfgcc-5.3.0.tar.gz3、创建安装目录#mkdir......
  • Linux学习笔记
    第一章:初识Linux1、LinuxLinux是一套免费和自由传播的类UNIX操作系统(类UNIX系统:是指继承UNIX的设计风格演变出来的系统),是基于POSIX和UNIX的多用户、多任务、支持多线程和......
  • 10个有趣的 Linux Shell 脚本面试与解答
    Linux的浩瀚无垠,使人总能每次都提交与众不同的内容。这些内容不仅对他们的职业生涯很有用,同时也让他们增长知识。在此,我们就尝试这么去做,至于能取得多大的成功,就由我们的读......
  • Docker-全面详解(学习总结---从入门到深化)
    一、什么是Docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。 什么是"集装箱技术"我们都知道码头里的集装箱是运载货物用的,它是一种按规......
  • HTML5+CSS3(十)-全面详解(学习总结---从入门到深化)
    ​​Display​​​​编辑 元素隐藏属性对比​​​​学习效果反馈 ​​​​文档流 ​​​​文档流产生的问题 ​​​​空格折叠​​​​元素无空隙​​​​脱离文档流​......
  • linux利用source命令导入sql文件
    1.创建数据库2.设置编码3.进入sql文件目录,使用msyql的source命令如下:source文件路径mysql>useg6monitor;mysql>source/app/t_sta_high_emission_vehicle.sql; ......
  • linux进阶命令
     1.linux中>表示覆盖原文件内容(文件的日期也会自动更新),>>表示追加内容(会另起一行,文件的日期也会自动更新)。  catid_rsa.pub >>authorized_keys  把id_rsa.pub追......
  • 螺栓松动与螺栓疲劳失效详解
       众所周知,螺栓连接作为一种重要的连接方式,广泛应用于汽车、轮船、轨道车辆、航空航天、家用电器等领域。如今,工程上越来越多地使用螺栓连接,而螺栓接头作为整个结构......