flock 文件锁
Linux 的 Crontab 计划任务的执行间隔如果太小,以至于一次任务还没有执行完毕,第二次任务又跟着执行,前序任务没有完成,后面的任务就会生成新的进程重复执行。
为了避免上述问题,可以使用 flock
命令设置文件锁,即任务首次执行时会生成一个锁文件,重复的任务请求不会予以执行。
举例说明
这里需要将一个目录内容归档到另外一个目录中:
rsync -ar /mnt/memory /var/data
如果直接把上述命令设置到 crontab 里面,如果归档操作的时间超过了计划任务的间隔时间,就会重复生成该任务的新进程。
使用 flock
命令:
这里可以创建一个脚本 rsync.sh
内容如下
#!/bin/sh
flock -n /tmp/rsync.lock -c 'rsync -ar /mnt/memory /var/data'
计划任务中设置执行 rsync.sh 脚本,这样就不会发生重复执行任务的问题了。