pyList

crontab 任务进程锁 Flock

当crontab 里跑一个运行时间不确定的任务,如有时需要30秒完成,有时需要5分钟完成,而在定时任务里我是设定每1 分钟运行一次。这样就容易引起上次任务还没跑完又开始跑了。这时可以用进程锁来运行。如下面例子:

*/1 * * * * /usr/bin/flock -xn -w 60 /var/run/test.lock -c "/home/root/tmp/gotest/gohl >> /home/root/tmp/logs/gotest.log"

注意:-c 后面跟的命令要用双引号

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 :显示版本。
本文标签: Flock 进程锁 crontab ubuntu
相关推荐
本文网址: https://pylist.com/t/1442562414 (转载注明出处)
如果你有任何建议或疑问可以在下面 留言
发表第一条评论!
验证码图片