我需要创建一个脚本(.sh),我可以使用它在一个命令中杀死进程。
当我做$ pgrep -f vmware
它显示了一个列表:
2234
2241
2251
2296
4751
现在我需要为每一个sudo kill -9 4751
有没有办法将其自动化为
sh sudokiller.sh vmware
那么它会自动完成任务吗?还是有更好的方法?
答案 0 :(得分:3)
你想要pkill
;它与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:~$
答案 1 :(得分:2)
使用循环:
for pid in `pgrep -f vmware` ; do
sudo kill -9 $pid
done
或者,只需使用
sudo killall -9 vmware