用Unix中最低的PID杀死进程

时间:2011-06-14 11:33:04

标签: unix

我有2个具有相同名称但不同PID的进程。我需要在这两个中找出具有最低PID的进程并将其杀死。我怎么做?

2 个答案:

答案 0 :(得分:6)

有点做作,但这就是诀窍(以bash为例):

pidof bash | grep -o "[0-9]*" | sort -n | sed '1q'

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

请记住,“最低PID”对于启动顺序并不是真正意义上的任何事情,除非您没有足够的进程再次从最大值下降到较低的未使用数量。更好(也可能更复杂)的方法是杀死旧流程或新流程,具体取决于哪个流程不好。

你可以在这里找到一些灵感How do you kill all Linux processes that are older than a certain age?

答案 1 :(得分:0)

Unix,还是带有/ proc目录的* nix?

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

opendir()和readdir()将是解析目录的工具。

如果你没有/ proc支持,你可以popen(“ps -options here”,“r”);读取ps的输出(使用适合您系统的任何选项)来解析进程列表。