zoukankan      html  css  js  c++  java
  • 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

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

    三、解决办法: 

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

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

    输出结果: 


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


    四、flock常用参数(man flock)

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

  • 相关阅读:
    svn-Subversion
    英语学习-2020年4月
    自动化-研究
    数据库-存储过程
    未来软件测试的发展趋势
    学习alex---人生导师
    自动化测试-----总结
    接口测试总结
    jmeter-接口测试项目
    接口测试jmeter
  • 原文地址:https://www.cnblogs.com/lemon-le/p/8476604.html
Copyright © 2011-2022 走看看