【问题标题】:Running Cron Job Even When Not Required即使不需要也运行 Cron 作业
【发布时间】:2014-04-28 05:13:58
【问题描述】:

我有一个计划每天执行几次命令的 Cron 作业。在某些情况下,cron 作业不需要但会自动运行。如果发生这种情况,将显示以下错误消息:

PM2 [ERROR] Script already launched, add -f option to force re execution

注意:Cron 作业参考脚本运行 PM2。

即使脚本已经在运行,运行 cron 作业是否有任何负面影响?

请提供详细信息或参考资料。请不只是您的意见。

【问题讨论】:

    标签: cron pm2


    【解决方案1】:

    不确定在这种情况下可以提供哪些详细信息或参考资料。这不像是有人委托研究来看看这个。

    假设您的命令足够智能,一次只允许执行一次(从您发布的错误消息来看似乎是这种情况),那么唯一的不良影响是几个 CPU 时钟周期(我认为)。

    【讨论】:

    • 我所说的详细信息或参考资料的意思是我不想要I think it... 的答案。你的答案很好。
    • 哈! => 让我微笑。
    【解决方案2】:

    通过编写一个从 cron 运行的包装脚本来避免错误的错误消息。在包装器脚本中,仅当您的作业尚未通过查询进程表运行时才运行它。

    假设 ksh,这里是一个 sn-p(我有点生疏,所以可能需要调整语法):

    # Running will be non-zero if no match found
    running=$(ps|grep MY_PROGRAM)
    if [[ "$running" -gt 0 ]]; then
      # run your program
    else
      # log its already running
    fi
    

    【讨论】:

    • 问题是——这还有必要吗?看来命令本身基本上已经在这样做了。我想这取决于它在抛出错误之前消耗了多少 CPU 和 RAM。我怀疑这还不算多,因为发出命令的人已经足够深思熟虑,已经检查了这种情况。
    • 你能提供例子吗?这个领域我没有任何信息。当我遇到各种不适用于共享主机的脚本时,这也适用于共享主机环境吗?
    • @mason 我不得不争辩说,在可以避免的情况下允许创建非错误是不好的做法。当您或更可能一年后在您身后维护它的人可以在故障排除时查看日志并且不必追踪非错误时,好处就会出现。捕获错误并记录真正发生的事情会更好、更清晰。看到类似“cronjob:正在启动 MY_PROGRAM - 已经在运行”之类的内容可以告诉您发生了什么,而不必为了发现它没有错误而追查错误消息。你能告诉我以前工作支持吗::-)
    • 我会争辩说,除了说Error,该命令已经在这样做了。用于尚未执行此操作的命令的便捷脚本!
    • @Lynda 恐怕我不知道共享主机环境。
    猜你喜欢
    • 2013-03-18
    • 2013-07-02
    • 2016-04-04
    • 2012-03-04
    • 2014-04-07
    • 1970-01-01
    • 2020-01-22
    相关资源
    最近更新 更多