首页 > 解决方案 > 确保多个脚本运行没有错误

问题描述

我是 bash 脚本的新手。我编写了一个并行运行 4 个 Python 脚本的脚本。这些脚本进行 API 调用以将数据带到本地机器,有时这些脚本会失败,并且只能获取一小部分数据。

如何确保如果脚本失败,bash 脚本的执行将重新开始,直到脚本获取所有数据?

#!/bin/bash

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

$scripts/filesystem.py > $data/filesystem_$date.log &
$scripts/cpu.py > $data/cpu_$date.log &
$scripts/memoria.py > $data/memoria_$date.log &
$scripts/swap.py > $data/swap_$date.log &

wait

更新

根据您的评论,脚本会是这样的吗?但是并行执行仍然有效吗?最后的等待命令是必要的吗?

until [ "$?" -eq "0" ]
do
    $scripts/filesystem.py > $datos/filesystem_$fecha.log &
done

until [ "$?" -eq "0" ]
do
    $scripts/cpu.py > $datos/cpu_$fecha.log &
done

until [ "$?" -eq "0" ]
do
    $scripts/memoria.py > $datos/memoria_$fecha.log &
done

until [ "$?" -eq "0" ]
do
    $scripts/swap.py > $datos/swap_$fecha.log &

done
wait

标签: linuxbashshell

解决方案


使用递归函数

f1 () { $scripts/filesystem.py > $data/filesystem_$date.log || f1; }
f1 &

等等所有脚本如果脚本失败,它将重新开始


推荐阅读