我想杀死我得到的所有进程:
ps aux | grep my_pattern
怎么做?
这不起作用:
pkill my_pattern
使用pkill -f
,它匹配命令行任何部分的模式
pkill -f my_pattern
听起来不错?
pkill `pidof myprocess`
例:
# kill all java processes
pkill `pidof java`
使用pgrep -f
与kill
最好和最安全,或者只是pkill -f
,grep
ing ps
的输出可能出错。
与使用ps | grep
不同,你需要通过添加| grep -v
或使用模式技巧来过滤掉grep线,pgrep
不会在设计中选择自己。
此外,如果您的模式出现在ps
的UID
/ USER
,SDATE
/ START
或任何其他列中,您将在输出中获得不需要的进程并杀死它们,pgrep
+ pkill
不会受此缺陷影响。
我也发现killall -r
/ -regexp
不能用我的正则表达式。
pkill -f "^python3 path/to/my_script$"
为不支持'pkill'的服务器找到了最好的方法
“kill -9 $(ps ax | grep My_pattern | fgrep -v grep | awk'{print $ 1}')”
你不必循环。
ps -ef | grep 'myProcessName' | grep -v grep | awk '{print $2}' | xargs -r kill -9
这段代码在做什么?
ps -ef
在该用户可见的计算机上生成进程ID列表。管道grep过滤掉包含该字符串的行。 grep -v grep
说这个过程本身与grepping不匹配。管道awk打印说在默认分隔符空格上拆分行,并过滤到第二列,这是我们的进程ID。管道xargs旋转了一个新进程,将所有这些pid发送到kill -9
,结束它们。
由于几个原因,上面的代码是坏的,危险的,丑陋的和hackish。
xargs kill
部分,并且仅当该请求被拒绝时,最后使用kill -9
ps -ef
列出了可能存在的每个可能的进程,你不能确定一些奇怪的第三方库共享你的进程名称,或者在读取和执行kill -9之间的时间,processid已经改变为其他东西,现在你不小心结束了一些你不想要的随机进程。但是,如果你用非常独特的名字了解它们的风险和控制,并且你可以通过一些丢弃的交易或偶尔的数据损坏,那么99.9%的时间你会没事的。如果出现问题,请重新启动计算机,确保没有任何进程冲突。这是因为像这样的代码使技术支持脚本:“你试过重新启动计算机”5级模因。
如果您需要更灵活地选择流程使用
for KILLPID in `ps ax | grep 'my_pattern' | awk ' { print $1;}'`; do
kill -9 $KILLPID;
done
你可以使用grep -e等
您可以使用以下命令列出该过程
ps aux | grep -c myProcessName
如果你需要检查该进程的计数然后运行
ps aux | grep -c myProcessName |grep -v grep
之后你可以使用杀死进程
kill -9 $(ps aux | grep -e myProcessName | awk '{ print $2 }')
你也可以使用killall -r my_pattern
。 -r
将进程名称模式解释为扩展正则表达式。
killall -r my_pattern
如果你判断pkill -f PATTERN
有点太危险,我写了一个bash脚本的ezkill,它提示你选择那些匹配你要杀死的PATTERN的进程。
您可以使用以下命令
kill -9 $(ps aux | grep 'process' | grep -v 'grep' | awk '{print $2}')
如果您不想在查找进程ID时遇到麻烦,请使用正则表达式按名称终止进程。例如,在代码之后杀死chrome就可以了。
killall -r --regexp chrome
您可以使用以下命令:
ps -ef | grep -i myprocess | awk {'print $2'} | xargs kill -9
要么
ps -aux | grep -i myprocess | awk {'print $2'} | xargs kill -9
这个对我有用。