【发布时间】:2011-06-14 11:33:04
【问题描述】:
我有 2 个同名但 PID 不同的进程。我需要找出这两个中PID最低的进程并将其杀死。我怎么做?
【问题讨论】:
-
想要自动化解决方案吗?或者你只是想通过 ps 的输出来获取 pid?
标签: unix
我有 2 个同名但 PID 不同的进程。我需要找出这两个中PID最低的进程并将其杀死。我怎么做?
【问题讨论】:
标签: unix
有点做作,但这可以解决问题(以 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?
【讨论】:
Unix,还是带有 /proc 目录的 *nix?
如果您有 /proc 支持,请通过 /proc/[0-9]+/cmdline 解析以查找其命令与您要查找的内容相匹配的进程;目录名称(在 /proc 之后)是 id。
opendir() 和 readdir() 将是您解析目录的工具。
如果你没有 /proc 支持,你可以 popen("ps -options here", "r");读取 ps 的输出(使用适合您系统的任何选项)以解析进程列表。
【讨论】: