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 &

    完美解决了我们的问题!

     

  • 相关阅读:
    关于xutils中的BitmapUtil实现简单的缓存和下载
    自定义spinner
    Dart格式化输出
    使用 dsc_extractor 导出 dyld_shared_cache_arm64
    iOS11 获取手机已安装应用列表
    恢复二进制文件中的block符号表
    iOS 反反注入 修改__RESTRICT,__restrict工具
    Node的调试
    UVa10131
    UVa116
  • 原文地址:https://www.cnblogs.com/quepq/p/11214238.html
Copyright © 2011-2022 走看看