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中允许一个命令

  • 相关阅读:
    Linux基础学习(7)
    Linux基础学习(6)
    Linux基础学习(5)
    Linux基础学习(4)
    Linux基础学习(3)
    测试工程师面试题
    Postman实战
    接口测试
    HTTP请求结构与HTTP响应结构
    GET请求与POST请求的区别
  • 原文地址:https://www.cnblogs.com/lemon-le/p/8476604.html
Copyright © 2011-2022 走看看