在Unix中杀死具有最低PID的进程

3

我有两个进程的名称相同,但是PID不同。我需要找到这两个进程中PID最小的进程并将其终止。如何实现?


你想要一个自动化的解决方案吗?还是只是想通过查看ps命令的输出来获取进程ID? - William Pursell
2个回答

7
有点牵强,但这个方法可行(以bash为例):
pidof bash | grep -o "[0-9]*" | sort -n | sed '1q'

或者

pidof bash | tr -s " " "\n" | sort -n | sed '1q'

请记住,“最低PID”在启动顺序方面并没有实际意义,除非您没有足够的进程从最大值回绕到低未使用数字。更好(也可能更复杂)的方法是杀死较旧或较新的进程,具体取决于哪一个出现问题。
您可以在这里找到一些灵感 如何杀死所有超过一定年龄的Linux进程?

0

Unix,或者一个带有/proc目录的*nix系统?

如果你有/proc支持,可以通过解析/proc/[0-9]+/cmdline来查找命令与你所寻找的相匹配的进程;目录名(在/proc之后)就是进程的id。

opendir()和readdir()将是你遍历目录的工具。

如果你没有/proc支持,你可以使用popen("ps -options here", "r");来读取ps的输出(根据你的系统选择合适的选项),然后解析进程列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接