我可以将 pgrep 与 Kill 链接起来吗?

我可以将 pgrep 与 Kill 链接起来吗?

我注意到它|用于将第一个命令的结果发送到另一个命令。我想杀死所有与名称匹配的进程。
这是 pgrep 通常所做的:

$ pgrep name
5089
5105

并且多个参数似乎适用于kill

sudo kill 5089 5105

但这是错误的:

pgrep name | kill

那么如何正确去做呢?

答案1

尝试这个:

pgrep name | xargs kill

如果您使用pgrep name | kill, 的输出pgrep name将馈送到 的 stdin kill。因为kill不从 stdin 读取参数,所以这不起作用。

使用xargs,它将kill从标准输入构建参数。例子:

$ pgrep bash | xargs echo
5514 22298 23079

答案2

这应该有效:

pkill name

我还建议阅读手册页。

答案3

回答一般性问题而不是具体问题...

管道用于将一个程序的输出传递为输入到另一个程序。

看起来您正在尝试将一个程序的输出用作命令行参数到另一个程序,这是不同的。

为此,请使用命令替换

例如,如果你想运行

sudo kill 5089 5105

你有一个pgrep name输出的命令5089 5105

你把它们放在一起就像

sudo kill $(pgrep name)

相关内容