我正在使用以下代码来杀死某个进程的所有 PID,但它没有按预期工作。
pgrep -f <processname>
kill -9 $(pgrep -f <processname>)
当有多个 PID 时,上述行会抛出错误说明:
争论太多。
我正在使用以下代码来杀死某个进程的所有 PID,但它没有按预期工作。
pgrep -f <processname>
kill -9 $(pgrep -f <processname>)
当有多个 PID 时,上述行会抛出错误说明:
争论太多。
killall
-r
允许按名称或什至正则表达式 ( ) 和一些其他选项来杀死所有进程,以匹配正确的进程组。SIGTERM
选项可用 (killall -9 name
)。这就是
pkill
:或者,如果您必须使用
-9
:为了执行您尝试的操作,您需要将命令的输出传递给. 相反,您传递的是一个名为的变量,它当然没有任何值。您可以通过在启用后运行命令来看到这一点:
pgrep
kill
$pgrep
set -x
(运行
set +x
以禁用调试信息)正如您在上面看到的,
$pgrep
由于它是一个未定义的变量,因此被删除,因此为空,并且-f
andemacs
作为参数传递给kill
. 您想要做的是使用命令替换将一个命令的输出作为输入传递给另一个:最后,
kill -9 foo
除非绝对必要并且kill foo
单独不起作用,否则避免使用。使用-9
可能非常具有破坏性,并且不会让进程优雅地退出。