开始两个永无止境的python脚本

时间:2019-03-29 14:41:28

标签: python linux bash unix

是否有启动两个永远不会结束的python脚本的正确方法?

我有一个Bash脚本。我只希望它在不同端口上启动两个python服务器应用程序。但是显然,当我到达第一个python命令时,它将永远循环

当您杀死bash脚本时,有没有办法杀死这两个python脚本?

    #!/bin/bash

python RunConstantly.py
python RunConstantly2.py

也许在python中这样做会更好?

2 个答案:

答案 0 :(得分:2)

#!/bin/bash
python RunConstantly.py  &
python RunConstantly2.py &
trap 'kill $(jobs -p)' EXIT
wait

如果两个后台进程都死亡或被杀死,则wait命令结束,脚本将正常退出。

如果您中断bash脚本(即使用Ctrl C),则陷阱将杀死后台作业。

答案 1 :(得分:1)

除非您以某种方式阻止bash脚本退出最后一行,否则最好正确命名脚本,并在nohup中使用&

nohup python Work1.RC1.py > RC1.log 2> RC1.err &
nohup python Work1.RC2.py > RC2.log 2> RC2.err &

当您需要终止任务时,请在运行的进程列表中搜索脚本的名称

ps aux | grep Work1

然后使用您发现的进程ID杀死它们

kill -10 pid

或者,如果您知道系统中进程名称没有冲突(也就是为什么第一步中正确命名脚本很重要)的话,您可以链接命令。

ps aux | grep Work1 | awk '{print $2}' | xargs -I{} kill -10 {}