从ps -ef | grep关键字获取pids

Den*_*Ich 103 linux shell daemon

我想用来ps -ef | grep "keyword"确定一个守护进程的pid(ps -ef的输出中有一个唯一的字符串).

我可以用pkill keyword任何命令返回pid而不是杀死它来杀死进程吗?(pidof或pgrep不起作用)

Sha*_*hin 217

只要包含选项,您就可以使用.这使得整个命令(包括参数)中的匹配关键字而不仅仅是进程名称.pgrep-fpgrep

pgrep -f keyword
Run Code Online (Sandbox Code Playgroud)

手册页:

-f       该模式通常仅与进程名称匹配.时-f被设定,则使用完整的命令行.


如果你真的想避免使用pgrep,请尝试:

ps -ef | awk '/[k]eyword/{print $2}'
Run Code Online (Sandbox Code Playgroud)

请注意[]关键字的第一个字母.这是避免匹配awk命令本身的有用技巧.

  • 将输出传递给kill的一种方法是:`kill -9 \`pgrep -f keyword \`` (4认同)
  • ps被过度使用,pgrep如此未被充分利用.谢谢你的帖子. (3认同)
  • @Kris 对于这个用例,使用“pkill -9 -f 关键字”不会更直接吗? (3认同)

Lew*_*ton 48

尝试

ps -ef | grep "KEYWORD" | awk '{print $2}'

该命令应该为您提供其中包含KEYWORD的进程的PID.在这种情况下,awk返回输出中第二列中的内容.

  • 因为这可以返回多个pid,所以可以通过附加`|获得第一个。-1。 (2认同)

小智 20

ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'

  • 也许是一个错字?ps -ef | grep KEYWORD | grep -v grep | awk'{print $ 2}' (4认同)
  • @alybadawy只需添加`| xargs杀死-9`到最后 (2认同)

小智 8

我用

ps -C "keyword" -o pid=
Run Code Online (Sandbox Code Playgroud)

该命令应该给你一个PID号.


dbr*_*nk0 7

这可以在linux上找到:pidof关键字


swa*_*ina 5

要通过特定关键字终止进程,您可以在~/.bashrc(linux) 或~/.bash_profile(mac) 中创建别名。

alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"
Run Code Online (Sandbox Code Playgroud)