crontab防止脚本周期内未执行完重复执行

利用 flock(FreeBSD lockf,CentOS下为 flock),在脚本执行前先检测能否获取某个文件锁,以防止脚本运行冲突。

flock [-sxun][-w #] fd#
 flock [-sxon][-w #] file [-c] command

选项解释

-s, --shared:    获得一个共享锁 
 -x, --exclusive: 获得一个独占锁 
 -u, --unlock:    移除一个锁,脚本执行完会自动丢弃锁 
 -n, --nonblock:  如果没有立即获得锁,直接失败而不是等待 
 -w, --timeout:   如果没有立即获得锁,等待指定时间 
 -o, --close:     在运行命令前关闭文件的描述符号。用于如果命令产生子进程时会不受锁的管控 
 -c, --command:   在shell中运行一个单独的命令 
 -h, --help       显示帮助 
 -V, --version:   显示版本 

锁类型:

共享锁:多个进程可以使用同一把锁,常被用作读共享锁
独占锁:同时只允许一个进程使用,又称排他锁,写锁。

这里我们需要同时只允许一个进程使用,所以使用独占锁。

 */1 * * * * flock -xn /tmp/test.lock -c 'php /home/phachon/cron/test.php' >> /home/phachon/cron/cron.log'

或者

* * * * * flock -xn /tmp/test.lock -c /home/phpsh/test.sh >> /tmp/test.log 2>&1 &

完美解决了我们的问题!

 

转载于:https://www.cnblogs.com/quepq/p/11214238.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值