我有这个 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
调用。这取决于你。