zoukankan      html  css  js  c++  java
  • crontab防止脚本周期内未执行完重复执行

    利用 flock(FreeBSD lockf,CentOS下为 flock),在脚本执行前先检测能否获取某个文件锁,以防止脚本运行冲突。

    flock [-sxun][-w #] fd#
     flock [-sxon][-w #] file [-c] command

    选项解释

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

    锁类型:

    共享锁:多个进程可以使用同一把锁,常被用作读共享锁
    独占锁:同时只允许一个进程使用,又称排他锁,写锁。

    这里我们需要同时只允许一个进程使用,所以使用独占锁。

     */1 * * * * flock -xn /tmp/test.lock -c 'php /home/phachon/cron/test.php' >> /home/phachon/cron/cron.log'

    或者

    * * * * * flock -xn /tmp/test.lock -c /home/phpsh/test.sh >> /tmp/test.log 2>&1 &

    完美解决了我们的问题!

     

  • 相关阅读:
    Distinct Values
    树状数组求逆序数
    Color the ball
    Cube
    树状数组
    手动编写JQUERY插件
    JQuery和原生JS跨域加载JSON数据或HTML。
    使用CEF(CEFGLUE)作为您的客户端UI(一)
    给IIS添加网站配置权限
    SQL SERVER 报:由于数据移动,未能继续以 NOLOCK 方式扫描错误的解决办法。
  • 原文地址:https://www.cnblogs.com/quepq/p/11214238.html
Copyright © 2011-2022 走看看