是什么导致Linux上的僵尸进程?

写得不好的父进程可能不会调用该wait()创建子进程时, 函数。 这意味着没有任何东西在监视子进程中的状态变化,并且该SIGCHLD信号将被忽略。

或者,可能是由于不良的编程或恶意的意图,另一个应用程序正在影响父进程的执行。

但是,如果父进程不在子进程中监视状态变化,则不会发生适当的系统内务处理。 子进程终止时,不会删除PCB和进程表中的条目。 这导致僵尸状态永远不会从PCB上移除。

僵尸确实会占用一些内存,但通常不会造成问题。 进程表中的条目很小,但是在发布之前,进程ID无法重用。 在64位操作系统上,这不太可能引起任何问题,因为PCB比工艺表条目大得多。

可以想象,大量的僵尸可能会影响可供其他进程使用的内存量。 但是,如果您有那么多僵尸,那么父应用程序或操作系统错误就是一个严重的问题。

如何删除僵尸进程

您无法杀死僵尸进程,因为它已经死了。 它不会对任何信号做出响应,因为它已从内存中删除了-无处发送SIGKILL信号。 您可以尝试将 发送SIGCHLD信号 给父进程,但是如果子进程终止时它不起作用,那么现在也不大可能起作用。

唯一可靠的解决方案是杀死父进程。 终止时,其子进程将被该 继承init进程 ,这是在Linux系统中运行的第一个进程(其进程ID为1)。

该init进程定期执行必要的清理僵尸的操作,因此要杀死它们,您只需杀死创建它们的进程即可。 该top命令是查看是否有僵尸的便捷方法。

输入以下内容:

该系统具有八个僵尸进程。 我们可以 列出来列出它们 通过使用 通过ps命令并将其 管道 egrep。 同样,僵尸进程的状态标志为“ Z”,您通常还会看到“已失效”。

输入以下内容:

ps aux | egrep“ Z |已终止”

列出了僵尸进程。

与来回滚动浏览相比,这是发现僵尸进程ID的一种更巧妙的方法top。 我们还看到一个名为“ badprg”的应用程序产生了这些僵尸。

第一个僵尸的进程ID是7641,但是我们需要找到其父进程的进程ID。 我们可以 使用ps再次 。 我们将使用输出选项(-o)告知ps仅显示父级的进程ID,然后将其与 一起传递ppid=标志 。

我们要查找的进程将使用 指示-p(process)选项 ,然后传入僵尸的进程ID。

因此,我们键入以下命令以查找进程7641的进程信息,但它将仅报告父进程的ID:

ps -o ppid = -p 7641

我们被告知父进程ID为7636。我们现在可以 使用它来交叉引用它ps再次 。

我们看到这与之前的父进程的名称匹配。 要终止父进程,请在kill命令中使用SIGKILL选项,如下所示:

杀死-SIGKILL 7636

根据父流程的所有者,您可能还需要使用sudo。

僵尸并不可怕……

…除非他们陷入大群。 没什么可担心的,只需重新启动即可清除它们。

但是,如果您发现某个应用程序或进程始终在生成僵尸,则应注意这一点。 它很可能只是一个草率的程序,在这种情况下,也许有一个更新的版本可以在子进程之后正确进行清理。

linux系统僵尸进程杀死,如何在Linux上杀死僵尸进程相关推荐

  1. linux系统怎么结束程序,如何在 Linux 系统中结束进程或是中止程序

    如何在 Linux 系统中结束结束进程或是中止程序 进程出错的时候,您可能会想要中止或是中断这个进程.本文,我们将在命令行和图形界面中探索进程或是应用程序的中断,这里我们使用 gedit 作为样例程序 ...

  2. 我的linux系统怎么输入pv,如何在Linux系统中使用pv命令

    本文介绍了如何在Linux系统中使用pv命令.内容很详细.有兴趣的朋友可以参考一下,希望对大家有帮助. PV 命令 PV由Andrew Wood开发,是Pipe Viewer的简称,意思是通过管道显示 ...

  3. linux系统更改计算机名称,如何在Linux中设置或更改主机名

    默认情况下,系统主机名是在安装过程中设置的,或者如果您正在创建虚拟机,则会在启动时将其动态分配给实例,但是在某些情况下需要更改它. 本教程将引导您完成在Linux中更改主机名的过程,而无需重新启动系统 ...

  4. linux系统derpin和ubuntu,如何在Ubuntu上安装Deepin桌面环境

    毫无疑问,Ubuntu是一个多功能的Linux操作系统,您可以根据自己的风格和品味进行自定义.使用Ubuntu的主要好处之一是很棒的社区支持.这也是各种开发人员开发基于Ubuntu的更多Linux操作 ...

  5. linux系统硬盘坏道,如何在 Linux 系统下检测硬盘上的坏道和坏块

    在 Linux 上使用坏块工具检查坏道 坏块工具可以让用户扫描设备检查坏道或坏块.设备可以是一个磁盘或外置磁盘,由一个如 /dev/sdc 这样的文件代表. 首先,通过超级用户权限执行 fdisk 命 ...

  6. linux 新用户 界面登录,如何在Linux系统登录界面加入个性化提示信息

    如何在Linux系统登录界面加入个性化提示信息 Linux字符界面看久了容易乏味,如果在登录时加点个性化显示看着也比较舒服,下面小编就给大家介绍下如何在Linux系统登录界面加入个性化提示信息,一起来 ...

  7. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...

    信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...

  8. linux系统的基本命令的使用心得,linux基本命令总结

    sina 基本命令分类简介: 查看Linux内核版本: cat /proc/version//第一种 uname -a           //第二种 uname -r           //第三种 ...

  9. 如何查看linux系统下的各种日志文件 linux 系统日志的分析大全

    如何查看linux系统下的各种日志文件 linux 系统日志的分析大全 日志分类: 1. 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这 ...

  10. 查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 查看Linux系统架构的命令,查看linux系统是哪种架构:AMD.ARM.x86.x86_64.pcc 文章目录: 1 ...

最新文章

  1. CentOS6.8下安装MySQL5.5数据库
  2. android studio- java注释自己动手弄起来
  3. 约束rmq_差分约束
  4. 4.IDA-导航(跳转到地址、导航按钮、栈帧、调用约定、局部变量布局、IDA的栈视图)
  5. 判断一段文件是UTF-8编码还是GB2312的编码方式
  6. 显示器分辨率一直跳_2020如何选择适合自己的显示器?小白选购电脑显示器必看!...
  7. 【iOS】iOS开发编码规范小结
  8. [paper reading] SSD
  9. React Native——一次学习,随处编写
  10. golang中base64编码_Rust 中的字符集编码 Rust 实践指南
  11. mysql自带的管理工具_mysql几个管理工具推荐
  12. 如何有效阅读英文数据手册?
  13. Mathematica 13 for Mac(科学计算软件)
  14. 当路由器外网IP变更时,执行操作
  15. ftp客户端中文乱码问题解决
  16. 2011年5月10日中兴通讯实习生招聘笔试小记
  17. Top100图神经网络论文大盘点
  18. 文档中心 统计分析 统计分析Android文档 集成文档
  19. android 绑定服务 解绑服务,安卓案例:绑定和解绑服务
  20. 美团点评将全面迎战百度、阿里、携程

热门文章

  1. 佳祺仕冲刺上交所:年营收5.1亿 高度依赖苹果产业链
  2. noip2018 爆炸记
  3. 《管理办法》正式施行,银保机构消费者个人信息保护圈重点!
  4. linux的双核浏览器,一种Linux浏览器实现WebKit/IE双核无缝浏览系统及方法与流程...
  5. Paddle高层API实现图像分类(CIFAR-100数据集_ResNet101)
  6. 上海亚商投顾:A股三大指数震荡涨跌各异 大消费全天活跃
  7. 脱口而出的100句经典英文
  8. c++ string类判断字符串是否为空
  9. Vue中的scoped的实现原理以及scoped穿透的用法
  10. 简述Python中的构造函数和析构函数