因为工作中用到crontab,所以会碰到定时任务重复启动的问题。后来发现了flock这条命令,非常方便。

假设我们有一个执行时间比较长的shell脚本run_long_time.sh,flock的使用方式如下:

flock -xn /tmp/run_long_time.lock sh run_long_time.sh
-x, --exclusive #获得一个独占的锁。
-n, --nonblock  #如果没有立即获得锁直接失败而不是等待。
# 其它的一些选项,可以查看相关文档

通过给文件加独占锁来获得运行权,这样就不会出现重复启动了。