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

时间:2011-11-14 10:34:38

标签: linux shell daemon

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

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

6 个答案:

答案 0 :(得分:212)

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

pgrep -f keyword

来自man page

  

-f模式通常仅与进程名称匹配。设置-f时,将使用完整的命令行。


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

ps -ef | awk '/[k]eyword/{print $2}'

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

答案 1 :(得分:45)

尝试

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

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

答案 2 :(得分:20)

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

答案 3 :(得分:8)

我用

ps -C "keyword" -o pid=

此命令应该为您提供一个PID编号。

答案 4 :(得分:6)

这可以在linux上找到:pidof keyword

答案 5 :(得分:1)

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

alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"