shell脚本的执行可能会出现接口拉取网络较慢以及处理文件过大等问题导致脚本执行时间较长。这种情况下如果放置crontab中执行可能导致上个周期脚本未结束,但是下个周期又开始执行该脚本,导致了脏数据产生等问题。
解决方法:在crontab中添加flock进行一个文件锁的使用
使用方法如下:
*/5 * * * * /usr/bin/flock -xn /www/web/demo/fecfa/cover_check.lock -c '/bin/bash /www/web/demo/fecfa/addons/fecmall/fecfaa/shell/dailyStatistics.sh >> /www/web_logs/fecshop/dailyStatistics.log 2>&1'
您需要先创建文件/www/web/demo/fecfa/cover_check.lock
并设置可写。
-x
代表 获取一个独占锁
-n
代表 如果没有立即获得锁失败(本次不执行)
cover_check.lock
则是锁文件所要放置的位置,用于flock
获得锁,判断本周期是否需要执行
''引号里面为要执行的命令