我想使用ps -ef | grep "keyword"
来确定守护进程的pid(ps -ef的输出中有一个唯一的字符串)。
我可以用pkill keyword
杀死进程是否有任何命令返回pid而不是杀死它? (pidof或pgrep不起作用)
答案 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}'`"