确保如果发生错误,脚本重新启动

确保如果发生错误,脚本重新启动

我有这个 bash 脚本,它可以并行运行 2 个 python 脚本,它们通过 API 从另一台服务器获取数据,它们工作正常,但有时当存在连接问题时会出现错误,并且只有部分数据被传送

我想确保如果发生错误,脚本会重新启动,因此我曾尝试使用直到,但是当我故意断开互联网连接以导致错误时,脚本退出并且不会重新启动。

你能帮我吗?

!/bin/bash

scripts=/root/scripts
datos=/root/datos
fecha=$(date +"%Y_%m_%d")

until $scripts/filesystem.py > $datos/filesystem_$fecha.log &
do
    echo error, retrying en 10 seconds
    sleep 10
done

until $scripts/cpu.py > $datos/cpu_$fecha.log &   
do
    echo error, retrying en 10 seconds
    sleep 10
done
wait

答案1

我没有看到你的 python 代码,但在我看来,你的 python 脚本并没有通知 shell 程序执行失败。

您需要在 Python 中处理失败并返回 shell 可以使用的正确退出代码。非 0 的代码将被 shell 解释为错误。

您可以通过如下方式调用来完成sys.exit

import sys

print('Simulating failure')

sys.exit(1)

另一种方法:如果您设法在 Python 中处理错误,也许您可​​以在 Python 代码中重试,而不需要 shell 循环,也不需要sys.exit调用。这取决于你。

相关内容