如何使用 OS X 终端杀死所有同名进程
Posted
技术标签:
【中文标题】如何使用 OS X 终端杀死所有同名进程【英文标题】:How to kill all processes with the same name using OS X Terminal 【发布时间】:2014-04-15 14:21:29 【问题描述】:通过运行得到以下输出:
ps aux | grep Python
输出:
user_name 84487 0.0 0.0 0 0 ?? Z 12:15PM 0:00.00 (Python)
user_name 84535 0.0 0.0 0 0 ?? Z 12:16PM 0:00.00 (Python)
我想终止当前在一台机器上运行的所有 Python 进程......
【问题讨论】:
【参考方案1】:使用pkill 和-f
选项。
pkill -f python
如果您没有预装pkill
(某些osx 没有...),请尝试proctools。
【讨论】:
【参考方案2】:如果你没有pkill
,你可以试试这个:
ps aux | grep python | grep -v grep | awk 'print $2'
如果这为您提供了您想要杀死的 PID,请使用类似这样的 kill 命令将其加入
kill $(ps aux | grep python | grep -v grep | awk 'print $2')
也就是说...杀死括号中的命令产生的所有 PID。
【讨论】:
这里不需要 grep:ps aux | awk '/python/ print $2' | xargs kill
Glenn:这比我的回答更优雅,请继续自己提出建议并抓住要点 - 你不会冒犯我的。我会投票给你!另外,请告诉我如何使用 @ 机制引用您的姓名(其中包含一个空格)。谢谢。
我想如果你只使用“@glenn”,那会通知我。通常在评论中,您可以输入“@gl”,系统会自动提示我的名字,在这种情况下,您可以点击 Tab 完成。但是,如果您要回复之前的评论,系统会确定您要回复的对象。这一切几乎都是有效的。关于这些要点,我的代码只是对您的代码的改进,并不是一个全新的答案。
kill -9 $(ps aux | grep python | grep -v grep | awk 'print $2') 为我工作
太棒了,让我免于重启。因为我的终端中一直在产生进程,所以我收到了“fork:资源暂时不可用”的消息。我试图杀死活动监视器中的进程,但这太慢了。所以我退出了一些正在运行的程序 - Mail、Safari - 并很快切换到终端并运行 ps aux.... 命令 - BAM。 1,300 个进程被杀死!【参考方案3】:
killall python
会成功的。
【讨论】:
对我不起作用 - killall 根本没有像宣传的那样起作用,它什么也没杀死。 OS X 10.13.3【参考方案4】:@shx2:谢谢你的技巧!以下是使其工作的步骤:
第一步:
cd /usr/bin
第二步:
touch "pkill"
第 3 步:使用您选择的 textEditor 打开您刚刚创建的文件:/usr/bin/pkill(使用 sudo 或成为管理员)。复制/粘贴并保存:
for X in `ps acx | grep -i $1 | awk 'print $1'`; do
kill $X;
done
Step3:设置文件属性
sudo chmod 755 /usr/bin/pkill
现在您可以使用简单的语法终止任何进程:
例如,要终止所有 Python 进程,请打开一个 shell 并键入:
pkill Python
现在所有的 python 进程都应该消失了。
【讨论】:
【参考方案5】:pgrep python | xargs sudo kill -9
【讨论】:
以上是关于如何使用 OS X 终端杀死所有同名进程的主要内容,如果未能解决你的问题,请参考以下文章