我经常需要在编程期间终止一个进程。

我现在的做法是:

[~]$ ps aux | grep 'python csp_build.py'
user    5124  1.0  0.3 214588 13852 pts/4    Sl+  11:19   0:00 python csp_build.py
user    5373  0.0  0.0   8096   960 pts/6    S+   11:20   0:00 grep python csp_build.py
[~]$ kill 5124

如何自动提取进程id并在同一行中杀死它?

是这样的:

[~]$ ps aux | grep 'python csp_build.py' | kill <regex that returns the pid>

当前回答

我用这个来杀死Firefox当它被脚本抨击和cpu抨击:) 把“Firefox”换成你想要的应用。我在Bash shell - OS X 10.9.3达尔文。

kill -Hup $(ps ux | grep Firefox | awk 'NR == 1 {next} {print $2}' | uniq | sort)

其他回答

我的任务是杀死所有与regexp匹配的放在特定目录中的内容(在selenium测试之后,并不是所有内容都停止了)。这招对我很管用:

for i in `ps aux | egrep "firefox|chrome|selenium|opera"|grep "/home/dir1/dir2"|awk '{print $2}'|uniq`; do kill $i; done

给pkill -f

pkill -f /usr/local/bin/fritzcap.py

.py文件的确切路径为

# ps ax | grep fritzcap.py
 3076 pts/1    Sl     0:00 python -u /usr/local/bin/fritzcap.py -c -d -m

我不喜欢纯粹基于grep的盲目结果而杀死东西——如果我错误地匹配了超出期望的结果怎么办?

我知道这可能会遭到命令行纯粹主义者的反对,但对于这种情况,我更喜欢使用交互式过滤器,比如pick (apt-get install pick)。使用这种工具,过滤后的结果会在你输入的时候显示出来,这样你就可以清楚地看到当你按回车键时什么会被杀死。

这样,一行代码就变成了

function killpick { ps ax | pick -q "$1" | awk  '{print $1}' | xargs kill -9; }

Killpick本身提供了一个带有增量过滤的选择器,可选参数为过滤器提供了一个起始字符串。

对于基本bash版本

Kill $(pidof <my_process>)

通过关键字midori终止进程,例如:

kill sigterm $(pgrep -i midori)