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.6k
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();

推荐问题