![杀死彗星僵尸](https://linux22.com/image/70552/%E6%9D%80%E6%AD%BB%E5%BD%97%E6%98%9F%E5%83%B5%E5%B0%B8.png)
我有一个僵尸进程正在更改其 PID,并且该进程正在增加。是否可以杀死PID大于N的进程?
答案1
你无法杀死僵尸。正如名字所示,它已经死了。僵尸进程不是真正的进程,它只是进程表中的一个条目,等待父进程注意到。
进程不会更改其进程 ID。如果您看到新的进程 ID 出现,那是因为有东西正在生成它们。
如果您要杀死的进程正在被监视,则监视程序会发现该进程已死亡,因此它会启动一个新实例。然而,使用监控程序,该进程不会成为僵尸,因为监视器将监视其子进程。
既然你看到的是僵尸,那么它的父母并没有关注它的孩子。检查父进程是什么:runps -o ppid -p 1234
其中 1234 是僵尸进程的 PID,然后ps -p 2345
2345 是父进程的 PID。然后根据父级决定您想要做什么,例如配置它以停止生成该子级。
答案2
该命令pkill
可能在您的系统上可用。它采用进程名称模式作为参数,而不是 PID,它允许您通过名称而不是 PID 来指定要终止的进程,例如,如果您想终止该httpd
进程:
pkill http
如果需要的话,它还可以带-9
参数来粗暴地停止进程。
默认情况下,它将影响与作为参数给出的模式匹配的所有进程。因此,我建议您在命令之前使用pgrep
与参数相同的模式,它将列出所有匹配的进程,这样您就一定不会杀死意外的进程。
这些命令接受各种补充过滤器,以根据不同的标准限制选择,如果需要,请毫不犹豫地检查它们的手册页以获取适用于您情况的过滤器。
答案3
pkill -f string
其中字符串是进程名称的一部分