【问题标题】:run a cron job only once只运行一次 cron 作业
【发布时间】:2011-06-20 22:09:33
【问题描述】:

您好,我必须从 Rails 控制器重新启动 Apache 我尝试使用 %x{}system 命令执行此操作,但失败了,所以我决定使用 cron 执行此操作是否可以使 cron 任务仅执行一次?

【问题讨论】:

    标签: ruby-on-rails cron


    【解决方案1】:

    cron 的一次性运行版本称为at。有关说明,请参阅 http://en.wikipedia.org/wiki/At_%28Unix%29,并注意将“现在”指定为时间会使其立即运行。

    【讨论】:

    • 要管理您的at 作业,atq 可以显示已注册的作业,atrm 可以从您的at 队列中删除作业,at -c <jobid> 可以向您显示将执行的具体内容在哪个环境中。
    【解决方案2】:

    安排一个 cron 作业只运行一次有点棘手,但可以通过自删除脚本来完成!将您的脚本安排在 cron 中下一分钟或其他更合适的时间,

    * * * * * /path/to/self-deleting-script
    

    自删除脚本会是这样的,

    #!/bin/bash
    # <your job here>
    crontab -l | grep -v $0 | crontab - # to delete your script from the cron
    #restart your cron service
    rm -f $0 #delete the script now
    

    它解决了我在 openwrt 路由器中无法安装 at 命令的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-19
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 2018-03-22
      • 2013-11-27
      • 1970-01-01
      相关资源
      最近更新 更多