运维 - linux crontab定时任务与flock

查看:95
本文介绍了运维 - linux crontab定时任务与flock的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

各位大虾好,本菜鸟最近遇到一个问题!

由于开发在写模块的时候,忽视一个比较不常见的错误,所以现在需要我们运维配合开发写一个暂时性脚本,脚本名叫log499.sh。脚本执行下来大约需要4分钟左右。但是crontab的频率还是一分钟,为了防止出现脚本运行冲突的问题。我就效仿http://chuansong.me/n/2856351...使用了flock,在crontab里写的语句是:

          • flock -xn /tmp/log499.lock -c 'sh /mnt/log499.sh >> /mnt/499.log 2>&1';

其中/tmp/log499.lock是一个空文件。

后来我启动这个crontab,发现果然只会在后台运行一个脚本,但是当运行一次之后,到了下一次该运行脚本的时间,却不再运行了,也就是说crontab只生效了一次,请问这是为啥?

解决方案

我已经解决了上面的问题,那就是在脚本里添加删除lock文件,新建lock文件的语句。我发现每次lock文件是新的时候才会触发crontab。

从图可见,只要检测是当前时间出现499 就会触发一个叫nginxchen.sh的脚本,这个脚本执行时间大约8分钟。

这篇关于运维 - linux crontab定时任务与flock的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆