我有2个具有相同名称但不同PID的进程。我需要在这两个中找出具有最低PID的进程并将其杀死。我怎么做?
答案 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的输出(使用适合您系统的任何选项)来解析进程列表。