linux flock命令解决linux定时任务重复执行问题

在做计划任务的时候,可能由于某些问题,任务没有执行完成,导致任务重复的运行,解决这个问题,只需要一个flock命令就可以了。

flock --help
flock (util-linux-ng 2.17.2)
Usage: flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command...
flock [-sxon][-w #] directory [-c] command...
-s --shared Get a shared lock #获得一个共享锁
-x --exclusive Get an exclusive lock #获得一个独占锁,这是默认的
-u --unlock Remove a lock #删除一个锁,通常是不需要的,因为在文件关闭时锁会自动删除
-n --nonblock Fail rather than wait #如果没有立即获得锁,直接失败而不是等待
-w --timeout Wait for a limited amount of time #如果没有立即获得锁,等待指定时间
-o --close Close file descriptor before running command #在执行命令之前关闭保持锁的文件描述符
-c --command Run a single command string through the shell #在shell中运行一个单独的命令
-h --help Display this text #显示帮助
-V --version Display version #显示版本

例:

执行一个定时脚本任务,每2分钟跑一次,将没有推送到外部系统的命令推送到外部系统,为了防止被多次推送的情况,所以需要控制并发,每次只能一个脚本任务在执行

具体实现 :

*/2 * * * * flock -xn /home/*/odp_ohs/data/BmsInvoicePushSap.lock -c '/home/*/odp_ohs/php/bin/php /home/work/odp_ohs/app/mc/script/invoice/PushInvoice2Sap.php'

posted on 2020-11-09 19:44  1450811640  阅读(1150)  评论(0编辑  收藏  举报