Grep
如何殺死所有具有給定名稱的程序?
我執行命令
ps -A | grep <application_name>
並獲取這樣的程序列表:19440 ? 00:00:11 <application_name> 21630 ? 00:00:00 <application_name> 22694 ? 00:00:00 <application_name>
我想殺死列表中的所有程序:
19440
,21630
,22694
.我已經嘗試過
ps -A | grep <application_name> | xargs kill -9 $1
,但它適用於錯誤。kill: illegal pid ? kill: illegal pid 00:00:00 kill: illegal pid <application_name>
我怎樣才能優雅地做到這一點?
pkill -f 'PATTERN'
將殺死模式
PATTERN
匹配的所有程序。使用該-f
選項,將考慮整個命令行(即包括參數)。如果沒有該-f
選項,則只會考慮命令名稱。另請參閱
man pkill
您的系統。
問題是
ps -A | grep <application_name> | xargs -n1
返回這樣的輸出19440 ? 00:00:11 <application_name> 21630 ? 00:00:00 <application_name> 22694 ? 00:00:00 <application_name>
您可以使用**
awk
先獲取一列ps
輸出**。ps -A | grep <application_name> | awk '{print $1}' | xargs -n1
將返回 PID 列表
19440 21630 22694
並添加
kill -9 $1
你有一個殺死所有 PID 的命令ps -A | grep <application_name> | awk '{print $1}' | xargs kill -9 $1