簡體   English   中英

使用Bash自動終止匹配過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM