我可以將 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)

相關內容