linux - 如何通过 shell 脚本在 Linux 上杀死已失效的进程

标签 linux shell zombie-process

<分区>

在我的服务器机器上,每天都有一些进程进入失效状态。它会影响我的 CPU 使用率。我需要编写一个 shell 脚本来终止已失效的进程 ID 和父进程 ID。

例如,当我运行命令时:

ps -ef|grep defunct.

它发现了许多值。因为我只需要杀死“[chrome] defunct”进程。

示例条目:-

bitnami  12217 12111  0 Feb09 pts/3    00:00:00 [chrome] <defunct>

我需要杀死这种类型的 chrome 条目。任何人都可以建议一些样本来杀死条目吗?

最佳答案

在父进程收尸或父进程死亡之前,不存在的进程不会消失。当父进程死亡时,已失效的进程由 PID 1 继承(通常是 PID 1;它是指定作业的某个系统进程),PID 1 旨在等待死者并将其从进程表中删除。因此,严格来说,已失效的进程只有在它们的父进程收集尸体时才会消失;当原来的父进程死亡时,新的父进程收集尸体,使不存在的进程最终消失。

因此,要么编写父代码,使其等待已死的子进程,要么终止父进程。

请注意,已停用的进程占用的资源非常少 - 基本上是进程表中的一个槽和父进程可以请求的资源(时间)信息。 话虽如此,去年我在一台机器上工作,每分钟有 3 个新的已失效进程,由 PID 1 以外的系统进程拥有,没有被收集。像 ps 这样的事情花了很长很长的时间,当死进程的数量攀升到数十万时。 (解决方案是为 o/s 安装正确的修复包。)它们并非完全无害,但有一些不是主要问题。

关于linux - 如何通过 shell 脚本在 Linux 上杀死已失效的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9223608/

相关文章:

linux - 将文件的文件名写入 Linux/fedora 自身。

linux - 如何在linux shell中创建一个不被Ctrl-C杀死的僵尸进程?

php - CakePHP 高可用性服务器场设置

linux - APK Docker 无法锁定数据库 : Permission denied

linux - 检查锁定用户的最佳方法是什么?

python - 为什么即使对池的映射调用完成,进程仍需要很长时间才能加入?

c - 为什么这个程序会创建一个僵尸进程,我该如何修复它?

linux - 进程未初始化

mysql - 我的sql注入(inject)方法

shell - 如何使用 Fabric 设置环境变量