我想使用 ps -ef | grep "keyword"来确定守护进程的 pid (在 ps-ef 的输出中有一个唯一的字符串)。
ps -ef | grep "keyword"
我可以用 pkill keyword终止进程有没有返回 pid 而不是终止它的命令?(pidof 或 pgrep 不工作)
pkill keyword
试试看
ps -ef | grep "KEYWORD" | awk '{print $2}'
该命令应该提供包含 KEYWORD 的进程的 PID。在这个例子中,awk从输出中返回第2列中的内容。
awk
只要包含 -f选项,可以就使用 pgrep。这使得 pgrep匹配整个命令(包括参数)中的关键字,而不仅仅是进程名。
-f
pgrep
pgrep -f keyword
来自 手册:
模式通常只与进程名匹配。设置 -f时,使用完整的命令行。
如果你真的想避免 pgrep,试试:
ps -ef | awk '/[k]eyword/{print $2}'
注意关键字第一个字母周围的 []。这是一个避免与 awk命令本身匹配的有用技巧。
[]
这在 linux: pidof 关键字上可用
ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'
我吸毒
ps -C "keyword" -o pid=
这个命令应该给你一个 PID 号码。
要使用特定的关键字终止进程,可以在 ~/.bashrc(linux)或 ~/.bash_profile(mac)中创建别名。
~/.bashrc
~/.bash_profile
alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"