crontab定时任务问题

crontab定时任务第一个周期未完成下一个周期执行就来了

有一个定时任务,每秒执行一次,前一秒还没有执行完成,下一个秒就来了,怎么解决。


 vim test.sh
#!/bin/sh

echo "开始 `date` " >> /tmp/test.txt
sleep 10
echo "结束 `date` " >> /tmp/test.txt
 
crontab -e
* * * * *  sleep 1;test.sh

输出结果:有多个执行脚本在运行

解决办法:
使用文件锁flock,使用文件锁的文件可以是任意文件

* * * * *  sleep 1;flock -xn test.sock -c '/bin/sh test.sh'

这样的话,当前一个任务没有执行完,后一个任务就来了的话,是不会执行的,会直到这个任务执行完成后,然后一个周期的时候再执行

flock常用参数(man flock)
-s:获取一个共享锁
-x :获得一个独占锁
-u:解除锁
-n:如果获取锁失败立即返回而不是等待
-w:如果获取锁失败等待的时间
-c:在shell中允许一个命令

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值