我想杀死所有我通过的进程:

ps aux | grep my_pattern

怎么做?

这不起作用:

pkill my_pattern

当前回答

可以使用以下命令:

ps -ef | grep -i myprocess | awk {'print $2'} | xargs kill -9

or

ps -aux | grep -i myprocess | awk {'print $2'} | xargs kill -9

这对我有用。

其他回答

可以使用以下命令

kill -9 $(ps aux | grep 'process' | grep -v 'grep' | awk '{print $2}')

如果您不想为查找进程id而头疼,请使用regexp按名称终止进程。例如,要杀死chrome,请执行以下代码。

killall-r铬

如果您在选择流程时需要更多的灵活性,请使用

for KILLPID in `ps ax | grep 'my_pattern' | awk ' { print $1;}'`; do 
  kill -9 $KILLPID;
done

您可以使用grep-e等。

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

killall -r my_pattern

最好和最安全的做法是将pgrep-f与kill一起使用,或者只使用pkill-f,greping ps的输出可能会出错。

与使用ps|grep(需要通过添加|grep-v或使用模式技巧来过滤掉grep行)不同,pgrep只是不会自行设计。

此外,如果你的模式出现在ps的UID/USER、SDATE/START或任何其他列中,你会在输出中得到不需要的进程并杀死它们,pgrep+pkill不会受到这个缺陷的影响。

我还发现killall-r/-regexp不能与正则表达式一起使用。

pkill-f“^python3路径/to/my_script$”

男子pkill