是否有启动两个永远不会结束的python脚本的正确方法?
我有一个Bash脚本。我只希望它在不同端口上启动两个python服务器应用程序。但是显然,当我到达第一个python命令时,它将永远循环
当您杀死bash脚本时,有没有办法杀死这两个python脚本?
#!/bin/bash
python RunConstantly.py
python RunConstantly2.py
也许在python中这样做会更好?
答案 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 {}