由于某种原因,我最终得到了相当多的 Google Chrome Helper 进程,这些进程停止响应,占用 CPU 资源。通常我只是运行killall Google\ Chrome\ Helper
,但这会杀死所有进程,包括响应进程,这意味着我必须重新启动 Chrome。
是否有一个标志,killall
因此它只影响无响应的进程?
答案1
一种方法是使用 来top
查找使用最多 CPU 的进程的 pid。我在一个终端中启动了 bash CPU hog:
bash -c "while true; do :; done"
然后在另一个终端中我可以按如下方式杀死它:
kill $( top -l2 | grep bash | sort -nrk3 | awk '{print $1;exit}' )
请注意,因为这是操作系统,这是BSD版本top
而不是GNU版本。
-l2
告诉 top 运行 2 次迭代 - 第一次需要忽略,因为它只报告所有进程的 0% CPU。- 只过滤
grep
bash 行。请注意,如果您的 grep 表达式与输出的任何其他部分匹配,这可能需要更多工作top
。 sort
按第三列 (CPU %) 对输出进行反向数字排序head
获取第一行(CPU 最高)cut
获取第一列(PID)- 上面是在
$()
命令替换中执行的,数字PID只是直接传递给kill
在 GNU/Linux 机器上等价的是:
kill $(top -bn1 | grep bash | sort -nrk9 | awk '{print $1;exit}')