【发布时间】:2012-01-29 01:10:05
【问题描述】:
我需要搜索某个进程并终止该进程。我写了一个这样的命令:
ps -e | grep dmn | awk '{print $1}' | kill
其中进程名称为dmn。但它不起作用。如何按名称和kill 查找进程。
【问题讨论】:
标签: linux bash shell command-line command-line-arguments
我需要搜索某个进程并终止该进程。我写了一个这样的命令:
ps -e | grep dmn | awk '{print $1}' | kill
其中进程名称为dmn。但它不起作用。如何按名称和kill 查找进程。
【问题讨论】:
标签: linux bash shell command-line command-line-arguments
kill $(ps -e | grep dmn | awk '{print $1}')
【讨论】:
$() 语法:kill $(ps -e | grep dmn | awk '{print $1}')。
kill $(ps -efw | grep dmn | grep -v grep | awk '{print $2}') 不知道为什么,也不太在意,请进一步研究。
kill 甚至试图杀死试图搜索模式的“grep”进程
\n,就像在 awk '{print $1"\n"}' 中一样?
grep; kill $(ps -e | awk '/dmn/ { print $1 }'(当然,也不要重新发明轮子:pkill dmn)。
如果您要删除多个进程,您可以使用这个:
ps -efw | grep dmn | grep -v grep | awk '{print $2}' | xargs kill
注意:您需要从输出中删除 grep 进程本身,这就是使用 grep -v grep 的原因。
【讨论】:
kill: (15142): Operation not permitted 甚至在杀死之前添加 sudo
你也可以使用killall:
killall dmn
【讨论】:
for procid in $(ps -aux | grep "some search" | awk '{print $2}'); do kill -9 $procid; done
你好朋友..我们可以使用 for 循环来做到这一点。
“Some search”在这里是您要搜索的任何进程名称,例如“java”所以假设 java 进程的计数是 200+,所以一个一个地杀死将太典型了。
所以你可以使用上面的命令。
谢谢。
【讨论】:
只是添加其他内容,但我喜欢使用 awk 的正则表达式功能容量:
kill $(ps | awk '/dmn/{print $1}')
【讨论】:
使用带有 -f 选项的 pgrep。
kill $(pgrep -f dmn)
【讨论】:
pgrep,为什么不只是pkill -f dmn?
如果您的系统上有 pidof 命令(我知道 ZSH 等 shell 默认情况下带有此命令,除非我弄错了),您可以执行类似的操作。
kill -9 $(pidof dmn)
【讨论】:
你可能不需要pipe,如果你有pidof命令并且知道图像名称,我是这样做的:
kill $(pidof synergyc)
$() 我理解这一点,因为它将输出转换为 kill 可以使用的变量,基本上就像管道一样。比其他一些选项更简短、更容易理解,但也可能不太灵活和更直接。
【讨论】: