使用flock对crontab加锁
在使用crontab配置脚本时,在执行时间较长会出现很多冗余进程,使用flock对其进行加锁,就不会再出现这种问题
如:
如果设定了任务每1分钟执行一次,但有可能执行该任务需要花费2分钟,这时系统会再执行任务。导致两个相同的任务在执行。这种情况下可能会出现一些并发问题,严重时会导致出现脏数据/性能瓶颈的恶性循环。
通过使用flock建立排它锁可以规避这个问题,如果一个进程对某个加了排他锁,则其它进程无法加锁,可以选择等待超时或马上返回。
在Linux中可查看flock参数解析
在初次配置时,不实用加锁,在运行脚本时,经常会出现多个进程,比如:
* * * * * python /home/vagrant/dev/projects/love-egg/cron_t.py >/data/logs/cron/cron_stout.log 2>&1
由于没有加锁,会导致资源浪费以及进程一直在执行,会导致脚本重复运行
使用flock加锁后不会重复运行: