当前位置: 首页 > news >正文

Linux执行一条命令并自动重试直到成功,自动化脚本

  1. 编辑filename.sh文件
sudo vim filename.sh

i 插入模式,编辑文件

# 定义函数来执行并重试每个命令
execute_with_retry() {
  local cmd="$1"
  while true; do
    # 执行命令,并将返回状态存储在STATUS变量中
    eval $cmd
    STATUS=$?

    # 检查命令是否成功,如果成功则退出循环
    if [ $STATUS -eq 0 ]; then
      echo "$cmd 命令执行成功"
      break
    else
      # 如果命令失败,则打印错误信息并等待一秒钟后重试
      echo "$cmd 命令执行失败,状态码: $STATUS. 正在重试..."
      sleep 1
    fi
  done
}

# 分别定义三个命令
CMD1="命令1"
CMD2="命令2"
CMD3="命令3"

# 调用函数执行命令
execute_with_retry "$CMD1"
execute_with_retry "$CMD2"
execute_with_retry "$CMD3"

echo "所有命令执行完毕!"

esc 退出编辑模式
:wq 保存,退出

  1. 添加执行权限
sudo chmod +x filename.sh
  1. 运行文件

方式一:直接运行

filename.sh

方式二:保存日志到指定路径,退出终端时运行不中断

nohup filename.sh > /data/log.log 2>&1 &

相关文章:

  • 无人机遥感图像拼接软件有哪些?无人机遥感图像采集流程;遥感图像拼接的一般流程
  • EventSource的使用
  • 动态规划LeetCode-494.目标和
  • 百度千帆平台对接DeepSeek官方文档
  • |网络安全|网络安全学习方法
  • 使用deepseek快速创作ppt
  • ESP32无线Wi-Fi蓝牙方案,设备智能连接控制,物联网通信应用
  • SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言
  • java后端开发day14--之前练习的总结和思考
  • 面向对象编程的设计原则
  • 【鱼眼镜头12】Scaramuzza的鱼眼相机模型实操,不依赖于具体的相机几何结构,直接从图像数据出发,因此更具灵活性。
  • 爬虫瑞数5.5案例:某钢材交易官网(面向对象补环境)
  • pyrender smpl 渲染
  • 【C语言】动态内存管理
  • ElementUI表格表头自定义添加checkbox,点击选中样式不生效
  • SQL-leetcode—1661. 每台机器的进程平均运行时间
  • 在 Flutter 实现下拉刷新、上拉加载更多和一键点击回到顶部的功能
  • Vulhub靶机 ActiveMQ 反序列化漏洞(CVE-2015-5254)(渗透测试详解)
  • webpack和vite打包原理及比较
  • PostgreSQL的学习心得和知识总结(一百六十八)|深入理解PostgreSQL数据库之PostgreSQL 规划器开发与调试(翻译)
  • 巴基斯坦关闭全部领空
  • 商务部再回应中美经贸高层会谈
  • 黄玮接替周继红出任国家体育总局游泳运动管理中心主任
  • 圆桌丨中俄权威专家详解:两国携手维护战后国际秩序,捍卫国际公平正义
  • 美联储如期按兵不动,强调“失业率和通胀上升的风险均已上升”(声明全文)
  • 央行:全力推进一揽子金融政策加快落地