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

我现在的做法是:

[~]$ 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>

当前回答

在某些情况下,我希望像这样同时杀死进程:

➜  ~  sleep 1000 &
[1] 25410
➜  ~  sleep 1000 &
[2] 25415
➜  ~  sleep 1000 &
[3] 25421
➜  ~  pidof sleep
25421 25415 25410
➜  ~  kill `pidof sleep`
[2]  - 25415 terminated  sleep 1000                                                             
[1]  - 25410 terminated  sleep 1000
[3]  + 25421 terminated  sleep 1000

但是,我觉得这对你来说有点不合适。(可能有运行python a, python b, python x…在背景中。)

其他回答

killall -r regexp

-r, --regexp

将进程名模式解释为扩展正则表达式。

给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

ps不需要用户开关。

kill `ps ax | grep 'python csp_build.py' | awk '{print $1}'`

你可以用awk和backtics来做

ps auxf |grep 'python csp_build.py'|`awk '{ print "kill " $2 }'`

awk中的$2打印列2,backtics运行打印的语句。

但是一个更干净的解决方案是让python进程将它的进程id存储在/var/run中,然后你可以简单地读取该文件并杀死它。

根据https://stackoverflow.com/a/3510879/15603477的回答。小的优化。

ps aux | grep 'python csp_build.py' | head -1 | tr -s ' ' | cut -d " " -f 2 | xargs kill

使用tr -s ' '将多个空白(如果有的话)压缩为一个空白。

如果你遇到不允许的行动,请跟着>> https://unix.stackexchange.com/questions/89316/how-to-kill-a-process-that-says-operation-not-permitted-when-attempted