[英]Automate Killing of Matching Processes with Bash
我需要創建一個腳本(.sh),可以用它在一個命令中殺死進程。
當我做$ pgrep -f vmware
它顯示以下列表:
2234
2241
2251
2296
4751
現在我需要為每一個sudo kill -9 4751
有沒有辦法自動化
sh sudokiller.sh vmware
會自動執行任務嗎? 還是有更好的方法?
你要pkill
; 它與pgrep
具有pgrep
命令行選項:
$ pkill -?
Usage: pkill [-SIGNAL] [-fvx] [-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST]
[-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] [PATTERN]
實際上,在我的系統(Slackware 14.1)上, /usr/bin/pgrep
實際上是/usr/bin/pkill
的符號鏈接,當以pgrep
運行時會搜索,而以pkill
運行時會殺死。
例:
me@host:~$ pgrep -f test.sh
1927
1932
1937
1945
1950
1955
1960
1965
1970
1975
1980
me@host:~$ pkill -f test.sh
me@host:~$ pgrep -f test.sh
me@host:~$
使用循環:
for pid in `pgrep -f vmware` ; do
sudo kill -9 $pid
done
或者,只需使用
sudo killall -9 vmware
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.