我通常用来pidof
获取进程的 pid,并KILL -SIGTERM <pid>
终止它。
管道应该将一个命令的输出作为另一个命令的输入。
那么为什么下面的命令不起作用呢?
pidof firefox | kill -SIGTERM
答案1
管道应该将一个命令的输出作为另一个命令的输入。
这是正确的,但kill
不接受标准输入的任何输入。相反,您需要将其作为命令行参数提供:
kill -SIGTERM "$(pidof firefox)"
或者:
pidof firefox | xargs kill
$(
是 shell 内部的命令扩展,而xargs
是外部的。
然而,这些方法有许多极端情况,例如如果有多个 pid、没有 pid 时该怎么办等等——这就是 pkill 存在的原因:
pkill -TERM firefox
答案2
更好地运行:
kill $(pidof firefox)
或者
pkill firefox
答案3
只是为了多样性:跑步怎么样:
kill -SIGTERM "$(pgrep -f firefox)"
不确定不区分大小写:
kill -SIGTERM "$(pgrep -fi FirEfox)"
多个进程以相同的名称运行,并且想要杀死第一个进程:
kill -SIGTERM "$(pgrep -f firefox | head -1)"
关于我的信息pgrep
$ pgrep -V
pgrep (proctools 0.4pre1) http://proctools.sourceforge.net