确保多个脚本运行无误

时间:2019-12-31 05:19:19

标签: linux bash shell

我是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

2 个答案:

答案 0 :(得分:1)

与递归一起使用功能

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

对于所有脚本,依此类推 如果脚本失败,它将重新开始

答案 1 :(得分:-1)

在上面的代码中,您调用Python程序。

https://superuser.com/questions/442745/do-commands-in-a-bash-script-run-in-parallel-or-one-after-another

https://unix.stackexchange.com/questions/242087/run-commands-in-parallel-and-wait-for-one-group-of-commands-to-finish-before-sta

#!/bin/bash

#Program 1

sleep 5 &
echo $?

if [ $? -ne 0 ]
then
exit 1
fi

#Program 2
sleep 3 &
echo $?

if [ $? = 0 ]
then
echo "command success"
else
exit 1
fi


wait
echo "Hello World "

如果程序1或程序2失败,则必须编写函数调用,这将重试该操作。

问题是确定程序1或2失败的原因,然后重新运行