Use crontab and flock to control cron job sequence

crontab -e 编辑定时任务

0 3 * * * shell.sh

从左到右依次是:分钟、小时、天、月、周

一般短时间(比如1分钟)重复执行的定时任务需要加锁,防止上一个任务没执行完,下一个定时任务重复执行。这里一般使用Linux系统自带文件锁flock配合crontab使用,例如

*/2 * * * * /usr/bin/flock -xn /var/run/cron.lock -c '/home/cron.sh'

参数说明

-s, --shared :获得一个共享的锁。
-x, --exclusive :获得一个独占的锁。
-u, --unlock :移除一个锁,通常是不需要的,脚本执行完后会自动丢弃锁。
-n, --nonblock :如果没有立即获得锁直接失败而不是等待。
-w, --timeout :如果没有立即获得锁就等待指定的时间。
-o, --close :在运行命令前关闭文件的描述符。用于如果命令产生子进程时会不受锁的管控。
-c, --command :在shell中运行一个单独的命令。

Disclaimer
  1. License under CC BY-NC 4.0
  2. Copyright issue feedback me#imzye.me, replace # with @
  3. Not all the commands and scripts are tested in production environment, use at your own risk
  4. No privacy information is collected here
Try my iOS App