如何使用解析 ps 输出的单个命令获取正在运行的进程的 pid?

sor*_*rin 22 bash awk sed pid

我正在寻找一行返回正在运行的进程的 pid 的行。

目前我有:

ps -A -o pid,cmd|grep xxx|head -n 1

这将返回拳头pid, command。我只需要输出中的第一个数字,而忽略其余部分。我想sedawk会在这里提供帮助,但我对他们的经验有限。

另外,这还有一个问题,如果 xxx 没有运行,它会返回 grep 的 pid。

有一行真的很重要,因为我想重用输出来做其他事情,比如杀死那个进程。

小智 28

如果您只想要进程的 pid,则可以使用(pgrep如果可用)。pgrep <command>将返回命令的 pid(或 pid 列表,以防有多个命令实例在运行,在这种情况下,您可以使用head或其他适当的命令)
希望这会有所帮助!

  • @steve:也许你应该看看 `pkill`。 (22认同)

che*_*ner 7

只需要一个命令;您只需要一行空格分隔值中的第一个字段:

ps -A -o pid,cmd|grep xxx | grep -v grep |head -n 1 | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

嗯,两个。我添加了另一个 grep 以从输出中删除 grep 本身。


小智 6

只需使用 pgrep,它就更直接了

pgrep -o -x xxxx
Run Code Online (Sandbox Code Playgroud)

以上选择了具有确切名称的最旧进程


小智 5

pidof xxx在linux上就足够了