如何使用给定的部分名称杀死所有进程?

Łuk*_*Lew 562 linux bash posix

我想杀死我得到的所有进程:

ps aux | grep my_pattern
Run Code Online (Sandbox Code Playgroud)

怎么做?

这不起作用:

pkill my_pattern
Run Code Online (Sandbox Code Playgroud)

Dor*_*mer 1217

使用pkill -f,与命令行的任何部分的模式匹配

pkill -f my_pattern
Run Code Online (Sandbox Code Playgroud)

  • 所以...`pkill -f.*`? (35认同)
  • 我建议首先使用`pgrep`来验证你要杀死的是什么.您可以使用`pgrep -l`查看进程名称或`pgrep -a`来查看完整的命令行.它使用与pkill相同的标志.所以在这种情况下你可以使用`pgrep -fa my_pattern`. (14认同)
  • @Jayan:它的杀戮也非常不分青红皂白.误操作很容易...... (6认同)
  • 对于任何找到这个答案的Mac用户,就像我一样,Mac等价物是`killall -m my_pattern`. (3认同)
  • 它适用于标志-9而不是-f. (3认同)
  • 如果您有许多没有被杀死的挂起进程,请使用 pkill -f -9 无情地杀死它们 (3认同)
  • 我建议添加 `-I` 标志(大写 `i`),以便在杀死每个匹配的进程之前要求确认。那样更难射中自己的脚。 (3认同)
  • @SmallChess 是正确的。我有 10 个工作只有使用“pkill -9 -f my_pattern”才会消失。 (3认同)
  • “模式”是什么意思。正则表达式?请添加示例。 (2认同)

Eri*_*ski 135

终止匹配字符串"myProcessName"的所有进程:

一个班轮:

ps -ef | grep 'myProcessName' | grep -v grep | awk '{print $2}' | xargs -r kill -9
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.commandlinefu.com/commands/view/1138/ps-ef-grep-process-grep-v-grep-awk-print-2-xargs-kill-9

  • 如果找不到与名称匹配的进程,则会抛出错误.你可能想使用`ps -ef | grep myProcessName | grep -v grep | awk'{print $ 2}'| 如果没有给出参数,xargs -r kill -9`让xargs不执行命令. (15认同)
  • 只需稍加修改,也许最好引用进程名称:`ps -ef | grep'myProcessName'| grep -v grep | awk'{print $ 2}'| xargs -r kill -9`没有引号,第一次运行时只有一个后台进程被杀死.再次运行它杀死了其余部分. (2认同)

Eug*_*eck 51

如果您需要更灵活地选择流程使用

for KILLPID in `ps ax | grep 'my_pattern' | awk ' { print $1;}'`; do 
  kill -9 $KILLPID;
done
Run Code Online (Sandbox Code Playgroud)

你可以使用grep -e等

  • @tripleee你的downvote没有问题,但是你确实知道,OQ是*"我想要杀死我得到的所有进程:ps aux | grep my_pattern"*,我非常接受. (8认同)
  • -1你不需要一个循环,你只需要`kill -9 \`ps ax | awk'[m] y_pattern {print $ 1}'\``(另请注意重构;另请参阅我对@ synthesizerpatel的回答的评论). (3认同)

小智 17

您可以使用以下命令列出该过程

ps aux | grep -c myProcessName 
Run Code Online (Sandbox Code Playgroud)

如果你需要检查该进程的计数然后运行

ps aux | grep -c myProcessName |grep -v grep 
Run Code Online (Sandbox Code Playgroud)

之后你可以使用杀死进程

kill -9 $(ps aux | grep -e myProcessName | awk '{ print $2 }') 
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 12

你也可以使用killall -r my_pattern.-r将进程名称模式解释为扩展正则表达式.

killall -r my_pattern
Run Code Online (Sandbox Code Playgroud)


kra*_*mer 8

如果你判断pkill -f PATTERN有点太危险了,我写了ezkill一个bash脚本,提示您选择哪些进程在那些符合你想杀死图案.


Ale*_*Liu 7

您可以使用以下命令

kill -9 $(ps aux | grep 'process' | grep -v 'grep' | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)


小智 7

如果您不想为查找进程 ID 而头疼,请使用正则表达式按名称杀死进程。例如,杀死 chrome 以下代码就可以解决问题。

killall -r chrome


Mag*_*iel 6

找到了对于不支持的服务器执行此操作的最佳方法pkill

kill -9 $(ps ax | grep My_pattern| fgrep -v grep | awk '{ print $1 }')
Run Code Online (Sandbox Code Playgroud)

您不必循环。


Mad*_*666 5

方法是这样的:

kill -9 $(pgrep -d' ' -f chrome)
Run Code Online (Sandbox Code Playgroud)

pgrep 搜索与之相关的所有进程chrome,并将它们返回到以空格分隔的列表中。

这将传递给kill可以安全地执行kill所有相关chrome进程的应用程序。

这还是很危险的,要小心。

  • 虽然此代码可以回答问题,但提供有关如何和/或为何解决问题的附加上下文将提高​​答案的长期价值。 (3认同)