flock 命令常用来给 crontab 中的任务执行加文件锁,这样可以保证当前任务执行完之前不会再起新的任务。
30 * * * * flock -xn /tmp/.shell.lock -c '/data/app/bin/shell.sh'>/dev/null 2>&1
例如 /data/app/bin/shell.sh
这个命令计划每小时执行一次,要是该命令执行时间超过 1 小时,会造成两个 /data/app/bin/shell.sh
进程同时执行的情况。要避免就可以通过 flock 加一个文件锁,命令执行时锁住文件 /tmp/.shell.lock
执行完成后解锁。若下次计划执行时间到了但文件还没有解锁,命令就不会执行。