Linux定时运行sh脚本,如果sh文件已经在运行,则忽略本次运行

需求来源

我需要linux的crontab定期每10分钟运行lan.sh脚本。但由于lan.sh运行需要较长时间,有时超过10分钟。这样会导致系统多次运行lan.sh脚本,引发运行堆积,导致一些非必要的错误。

解决方法

解决方法是写一个脚本,如果lan.sh已经在运行的话,则忽略本次运行,并把执行记录写入日志。

脚本如下(亲测)run_lan.sh:

#!/bin/bash

# 检查lan.sh是否已在运行中
if pgrep -f lan.sh >> /log/lan.log; then
    echo $(date +"%Y-%m-%d %H:%M:%S")"*****: lan.sh is already running, skipping this execution." >> /log/lan.log
else
    echo $(date +"%Y-%m-%d %H:%M:%S")"*****: Running /app/lan.sh..." >> /log/lan.log
    # 运行lan.sh脚本
    /app/lan.sh
    echo $(date +"%Y-%m-%d %H:%M:%S")"*****: lan.sh run finish" >> /log/lan.log
fi

定时任务改动

crontab -e (注意:不通账号有自己的crontab, 需要在对应的账号中设置crontab。一般默认编辑后自动生效)

*/10 * * * * /app/run_lan.sh > /dev/null 2>&1

***********************************************************************************************
author:蓝何忠
email:lanhezhong@163.com
***********************************************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值