我是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
答案 0 :(得分:1)
与递归一起使用功能
f1 () { $scripts/filesystem.py > $data/filesystem_$date.log || f1; }
f1 &
对于所有脚本,依此类推 如果脚本失败,它将重新开始
答案 1 :(得分:-1)
在上面的代码中,您调用Python程序。
#!/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失败的原因,然后重新运行