【发布时间】:2011-12-28 13:12:38
【问题描述】:
我想使用ps -ef | grep "keyword" 来确定一个守护进程的pid(在它的ps -ef 的输出中有一个唯一的字符串)。
我可以用pkill keyword 杀死进程有没有返回pid 而不是杀死它的命令? (pidof 或 pgrep 不起作用)
【问题讨论】:
我想使用ps -ef | grep "keyword" 来确定一个守护进程的pid(在它的ps -ef 的输出中有一个唯一的字符串)。
我可以用pkill keyword 杀死进程有没有返回pid 而不是杀死它的命令? (pidof 或 pgrep 不起作用)
【问题讨论】:
只要包含-f 选项,您可以使用pgrep。这使得pgrep 匹配整个命令(包括参数)中的关键字,而不仅仅是进程名称。
pgrep -f keyword
来自man page:
-f该模式通常仅与进程名称匹配。当设置-f时,使用完整的命令行。
如果你真的想避免 pgrep,试试:
ps -ef | awk '/[k]eyword/{print $2}'
注意关键字第一个字母周围的[]。这是避免匹配awk 命令本身的有用技巧。
【讨论】:
kill -9 `pgrep -f keyword`
ps aux | grep chrome上浪费了很多时间
pgrep -f 使用[k] 技巧。我的脚本在子 shell 中运行,所以我认为它正在获取它的父命令(很难确定 - 当命令执行完成时它返回的 pid 消失了!)
pkill -9 -f keyword?
试试
ps -ef | grep "KEYWORD" | awk '{print $2}'
该命令应该为您提供带有 KEYWORD 的进程的 PID。在这种情况下,awk 从输出返回第二列中的内容。
【讨论】:
| head -1 来获得第一个。
ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'
【讨论】:
| xargs kill -9
这在 linux 上可用:pidof 关键字
【讨论】:
我用
ps -C "keyword" -o pid=
这个命令应该给你一个 PID 号。
【讨论】:
要通过特定关键字终止进程,您可以在 ~/.bashrc (linux) 或 ~/.bash_profile (mac) 中创建别名。
alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"
【讨论】:
| head -1 的末尾添加一个管道,这一切都很好而且整洁。