linux - 确保多个脚本运行没有错误
问题描述
我是 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
解决方案
使用递归函数
f1 () { $scripts/filesystem.py > $data/filesystem_$date.log || f1; }
f1 &
等等所有脚本如果脚本失败,它将重新开始
推荐阅读
- oracle - 如何在 JAVA 中部分处理 db select 结果
- php - 我的 php 函数在运行 30 秒后停止
- node.js - 通过@odata.nextLink从节点递归获取所有数据来自rest api(odata)响应
- uwp - UWP 启动器。如何导入 Laucher 类
- r - 使用R中的循环从矩阵中递归删除最小值
- docker - 如何在 Jenkins 管道中设置 postgres 数据库?
- typescript - 如果有一个值,则将参数作为字符串数组获取
- javascript - 下拉菜单在响应式 jquery 数据表中不起作用
- mysql - 从 mySQL 数据库有条件地删除
- jquery - jQuery ajax 成功函数在 wordpress 中不起作用