crontab定时任务第一个周期未完成下一个周期执行就来了

一、现象

有一个定时任务,每分钟执行一次,前一分钟还没有执行完成,下一个分钟就来了,怎么解决。 

 

二、模拟

#!/bin/bash

echo "开始 `date` " >> /lile/shell/ll.txt
sleep 70
echo "结束 `date` " >> /lile/shell/ll.txt

 

*/1 * * * * /bin/sh /lile/shell/test_cron.sh

 

输出结果:不是一个执行完,再执行下一个的结果 

crontab定时任务第一个周期未完成下一个周期执行就来了_第1张图片

 

三、解决办法: 

 

使用文件锁flock,使用文件锁的文件可以是任意文件 

*/1 * * * * flock -xn /lile/shell/test_cron.sock -c '/bin/sh /lile/shell/test_cron.sh'

 

输出结果: 

crontab定时任务第一个周期未完成下一个周期执行就来了_第2张图片


这样的话,当前一个任务没有执行完,后一个任务就来了的话,是不会执行的,会直到这个任务执行完成后,然后一个周期的时候再执行


四、flock常用参数(man flock)

-s:获取一个共享锁
-x :获得一个独占锁
-u:解除锁
-n:如果获取锁失败立即返回而不是等待
-w:如果获取锁失败等待的时间
-c:在shell中允许一个命令

你可能感兴趣的:(crontab定时任务第一个周期未完成下一个周期执行就来了)