在做计划任务的时候,可能由于某些问题,任务没有执行完成,导致任务重复的运行,解决这个问题,只需要一个flock命令就可以了
在将corntab 中任务串行化时,flock 通过对一个中间文件加文件锁来间接实现同一时刻某个任务只有一个实例运行的目标。对应的 crontab 中任务的描述形式如下:
* * * * * flock -xn /tmp/mytest.lock -c 'php /home/fdipzone/php/test.php' >> /tmp/ytest.log 2>&1
命令中,-x 表示对文件加上排他锁,-n 表示文件使用非阻塞模式,-c 选项指明加锁成功后要执行的命令。因而上面flock 命令的整体含义就是:如果对 /tmp/mytest.lock 文件(如果文件不存在, flock 命令会自动创建)加锁成功就执行后面的命令,否则不执行。
>> /tmp/ytest.log 2>&1 为输出日志文件