我需要搜索某个进程并杀死该进程。我写了这样一个命令:
ps -e | grep dmn | awk '{print $1}' | kill
当进程名称为dmn
时。但是它没有起作用。我该如何按名称查找进程并将其kill
掉。
我需要搜索某个进程并杀死该进程。我写了这样一个命令:
ps -e | grep dmn | awk '{print $1}' | kill
当进程名称为dmn
时。但是它没有起作用。我该如何按名称查找进程并将其kill
掉。
kill $(ps -e | awk '/dmn/ {print $1}')
如果有多个进程需要删除,可以使用以下方法:
ps -efw | grep dmn | grep -v grep | awk '{print $2}' | xargs kill
注意:你需要从输出中移除grep进程本身,这就是为什么要使用grep -v grep
的原因。
pidof
命令(我知道像ZSH这样的shell默认情况下会带有该命令,除非我弄错了),则可以执行以下操作。kill -9 $(pidof dmn)
如果你知道镜像名称并有pidof
命令,那么你可能不需要使用pipe
。我是这样做的:
kill $(pidof synergyc)
$()
我理解为它将输出转换为变量,kill可以使用该变量,基本上就像管道一样。比其他选项更短,更易于理解,但也可能不太灵活,更加直接。
除了其他人提到的,我喜欢使用awk的正则表达式功能:
kill $(ps | awk '/dmn/{print $1}')
for procid in $(ps -aux | grep "some search" | awk '{print $2}'); do kill -9 $procid; done
大家好,我们可以使用for循环完成这个任务。
"一些搜索",这里是您想要搜索的进程名称,例如 "java",假设java进程的数量超过200个,逐个杀死将会非常麻烦。
所以你可以使用上面的命令。
谢谢。
使用pgrep
命令并带上-f选项。
kill $(pgrep -f dmn)
pgrep
,为什么不直接使用pkill -f dmn
? - muru
$()
语法:kill $(ps -e | grep dmn | awk '{print $1}')
。这条命令的作用是杀死所有包含“dmn”关键字的进程。 - Stratus3Dkill $(ps -efw | grep dmn | grep -v grep | awk '{print $2}')
。我不确定原因,也不想进一步探究。 - joshweirkill
尝试杀死正在尝试搜索模式的 'grep' 进程。 - meain\n
吗?就像这样:awk '{print $1"\n"}'
。 - Sopalajo de Arrierezgrep
(http://www.iki.fi/era/unix/award.html#grep);kill $(ps -e | awk '/dmn/ { print $1 }'
(当然,也不要重复造轮子:pkill dmn
)。 - tripleee