【问题标题】:How to stop minute cron job?如何停止分钟 cron 作业?
【发布时间】:2015-07-30 20:44:24
【问题描述】:

我有一个用 python 编写的程序,我的程序每分钟从某个金融网站上抓取一个值并将该值推送到我的数据库中。我的程序需要大约 1 秒或最多 1.5 秒来完成这项工作。我已经设置了一个 cron 作业来每分钟调用一次我的程序。我需要每天从上午 9 点到下午 4 点以这种方式运行我的程序。现在有时我可能不得不在上午 9 点到下午 4 点之间的任何时间停止我的程序以终止程序。我该怎么做?

根据this link 我尝试了ps -o pid,sess,cmd afx | grep -A20 "cron$",但我无法在列表中找到我的程序,因为它在几秒钟内完成了它的工作。

参考this 我试过/etc/init.d/cron stoppkill cron 这会杀死所有我不想要的cron作业。我在 ubuntu linux 中运行这个 cron。任何帮助都将不胜感激。

【问题讨论】:

    标签: linux ubuntu cron


    【解决方案1】:

    在程序中包含日期时间检查是否可行?如果在上午 9 点之前或下午 4 点之后它不会运行?

    以下也应该有效:

    * 9-15 * * * script.sh
    0 16 * * * script.sh
    

    切换:也许让它从配置中读取/检测文件的存在(充当标志)以确定是否运行。

    【讨论】:

    • 是的,我在我的程序中包含了日期时间检查,它不会在上午 9 点之前和下午 4 点之后运行。
    • 从 09:00 到 16:59 每分钟运行一次。要从 09:00 运行到 16:00,您需要两条线路,一条从 09:00 运行到 15:59,另一条运行在 16:00。
    【解决方案2】:

    只需重命名脚本名,就不会执行了

    【讨论】:

      【解决方案3】:

      修改程序,使其仅在特定文件存在时运行。如果您需要停止程序,请删除该文件。 (或者只在文件存在时运行它,并且touch文件停止程序。)

      如果您无法修改程序,您可以将 shell if 语句作为 cron 命令执行。

      【讨论】:

      • 我想,我什至可以使用 DB 来创建某种标志。我可以修改我的程序,使我的程序只有在标志设置为执行然后执行时才执行,否则我的程序不应该执行。每当我希望我的程序停止执行时,我只需设置标志不执行。
      • Thanq,这是我想到的一个很好的解决方案。但仍然想知道是否有更好的解决方案。
      • @ChiyaanSuraj DB 控制执行绝对是最好的解决方案,如果您在脚本中使用 DB。如果您使用 Oracle,则可以将 DBMS_SCHEDULER 作为 cron 的替代方案。
      • 好的。那么没有像杀死那个特定的 cron 作业那样的解决方案吗?
      • @ChiyaanSuraj:没有与单个 cron 作业关联的进程,因此没有什么可杀死的。另一种可能的选择是修改 crontab,但这需要访问创建它的用户帐户。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 2019-05-10
      • 2011-05-28
      • 2018-07-23
      • 2013-10-22
      • 1970-01-01
      相关资源
      最近更新 更多