【问题标题】:How to run a per second cron job every two minutes如何每两分钟运行一个每秒 cron 作业
【发布时间】:2011-06-20 11:50:40
【问题描述】:

我必须在我的托管服务提供商上设置一个 cron 作业。

这个 cron 作业需要每秒运行一次。这不是密集的,只是做检查。

但是,托管服务提供商只允许每两分钟运行一次 cron 作业。 (不能更改托管顺便说一句)

所以,我不知道该怎么做?

到目前为止我的想法: 如果它只能每两分钟运行一次,我需要让它每秒运行两分钟。 1) 如何让我的脚本运行两分钟,每秒执行一个函数?

但重要的是没有中断。 2) 我必须确保它运行平稳并且始终保持活跃。

也许我也可以尝试让它永远运行,每两分钟运行一次 cron 作业,检查它是否正在运行? 3) 这可能吗?

我的朋友提到使用多线程来确保它每秒都在运行。 4)这方面有什么cmet吗?

感谢您的任何建议。我用的是采埃孚。

【问题讨论】:

    标签: hosting cron


    【解决方案1】:

    我认为 cron 不允许二级分辨率。 http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5

          field      allowed values
          -----      --------------
          minute         0-59
          hour       0-23
          day of month   1-31
          month      1-12 (or names, see below)
          day of week    0-7 (0 or 7 is Sun, or use names)
    

    因此,即使您的托管服务提供商允许您运行每秒重复的进程。但是,您可以使用类似watch 的命令来重复执行您的脚本。见here

    【讨论】:

      【解决方案2】:

      方法#3 是标准解决方案。例如,您可以让 cron 作业在每次运行时触摸文件。然后在启动时您可以检查该文件是否最近被触摸过,如果它立即退出。否则开始运行。 (其他方法包括使用文件锁定,或者将 pid 写入文件并在启动时检查该 pid 是否存在并且是预期的程序。)

      至于一秒超时,我建议在查询结束时调用 usleep,提供从现在到下一次想要运行的毫秒数。如果您进行定期睡眠,那么您实际上每秒运行的时间会少于一次,因为睡眠时间有时比预期的要长,并且您的检查需要时间。只要您的检查需要不到一秒钟的时间运行,这应该可以正常工作。

      【讨论】:

        猜你喜欢
        • 2018-02-18
        • 2020-11-01
        • 2021-12-18
        • 2013-11-27
        • 1970-01-01
        • 2021-06-17
        • 2022-12-18
        • 2013-06-12
        • 2011-03-20
        相关资源
        最近更新 更多