shell如何运行多个python并且自重启

这个代码可以运行单个python并且在关闭以后自重启
示例1:

#!/bin/bash
while [ 1 ];do
    python3 price.py
done

现在我需要一个shell运行多个python,并且自重启
下面代码的问题 a如果异常关闭了 b还是会持续运行 不会自己重启A 也不会重新执行while

示例2

#!/bin/bash
while [ 1 ];do
    ps -ef | grep a.py | grep -v grep | awk '{print $2}' | xargs kill -9
    ps -ef | grep b.py | grep -v grep | awk '{print $2}' | xargs kill -9
    cd /home/pdgram/
    python3 a.py >> a.log & python3 b.py >> b.log
done

我现在就是有很多个python文件 并且需要shell自重启 示例1虽然能重启单个 但是写多个shell也不方便管理,而现在需要的就是示例1的逻辑能运行多个python.而示例2是我自己编写的 目前不能实现

阅读 3.5k
2 个回答

supervisor 啊,想用 systemd 也是可以的.

新手上路,请多包涵
python3 a.py >> a.log & python3 b.py >> b.log

这行代码可以拆分成如下:

python3 a.py >> a.log
python3 b.py >> b.log

题主说的问题是指 执行python3 a.py后,如果出现异常,就重新进行while循环吗?
那么就直接加个判断不就行了?
(PS: 在执行a.py脚本里面 , 记得用exit 1 非正常退出.)

if [ $? == 0 ]; then
 echo "成功~!"
else
 echo "异常~,跳过这次循环!"
 continue
fi

题主的另一个问题:

" b还是会持续运行 不会自己重启A 也不会重新执行while"

b持续运行,不会重新执行while --> 是不是 b.py里面有无限循环呀, 只有b.py执行结束后,才会重新执行while();

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题