sudo 杀死 ps、awk、xargs 的输出

Dav*_*ave 6 sudo awk command-line xargs

我想杀死进程名称中包含 foo 的 root 拥有的进程

sudo sh -c "ps aux | grep [f]oo  | awk '{print $2}' | xargs kill -15"
Run Code Online (Sandbox Code Playgroud)

此命令失败,因为 awk 和 xargs 被忽略。

sudo sh -c "ps aux | grep [f]oo  | awk '{print $2}' | xargs kill -15"
Run Code Online (Sandbox Code Playgroud)

所以 kill 收到错误的参数

kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.
Run Code Online (Sandbox Code Playgroud)

Ben*_*ebe 2

这是一个丑陋的黑客,并且kill会抱怨,但它有效(至少对我来说):

sudo kill `ps -ae | grep foo` &>/dev/null
Run Code Online (Sandbox Code Playgroud)

&>/dev/null部分为可选;如果您不想看到所有的kill投诉,请将其包括在内。

我知道可能有更好的方法来做到这一点,但这就是我使用的方法。