Running Cron Job Even When Not Required
我有一个Cron Job,计划每天执行几次命令。 在某些情况下,不需要cron作业,但该作业会自动运行。 如果发生这种情况,则会显示以下错误消息:
1
| PM2 [ERROR] Script already launched, add -f option to force re execution |
注意:Cron Job参照脚本运行PM2。
即使脚本已经在运行,对cron作业的运行也有负面影响吗?
请提供详细信息或参考。 请不仅仅是您的意见。
通过编写由cron运行的包装器脚本来避免错误的错误消息。 在包装脚本中,仅通过查询进程表运行作业(如果尚未运行)。
假设ksh,这是一个代码段(我有点生疏,所以可能需要调整语法):
1 2 3 4 5 6 7
| # 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。我很怀疑,尽管如此,因为无论谁发出命令,都已经考虑周全,可以检查这种情况。
-
你能提供例子吗?我没有这方面的信息。当我遇到无法在共享主机上运行的各种脚本时,是否也可以在共享主机环境上运行?
-
@梅森我不得不争论它的坏习惯,即在可以避免的情况下允许创建非错误。当您或更可能是从现在起一年后在您身后维护该产品的人可以在进行故障排除时查看日志而不必追逐非错误时,就会有好处。捕获错误并记录实际发生的情况会更好,更清洁。看到类似" cronjob:正在启动MY_PROGRAM-已运行"之类的信息,可以告诉您发生了什么事,而不必追逐错误消息,只是发现它没有错误。你能告诉我我以前工作时的支持吗:-)
-
我会说,除了说Error以外,该命令已经这样做了。方便的脚本,用于尚未执行此操作的命令!
-
@Lynda我担心我不知道共享主机环境。
-
@mason错误中包含字符串" ERROR"。当这确实不是错误时,这可能会导致监视脚本看到该错误并引发标志。我在扮演魔鬼拥护者,不得不在生产中处理这个问题。由于非错误记录为" ERROR",因此寻呼机在03:00关闭!尽早发现错误,并睡个好觉。 h
-
授予原始程序不应记录该程序已经作为错误运行的事实。根据您的要求和环境来决定该条件是否确实是错误。它应该为该条件返回唯一的返回码,并让包装程序查询该条件并(由您决定)什么是适当的操作。
-
没有参数的ps可能会错过该过程。使用选项,ps进程可能会发现自己。 man ps,然后再尝试此方法。
-
@Keith oops最后一个未完成的注释应该是:正确:" ps | grep [m] y_program"与" my_program"匹配,但与" grep [m] y_program"不匹配。
-
@Gary_W:ps的行为差异很大。在我的Linux系统上,不带参数的ps仅显示当前用户拥有并与当前终端相关联的进程-它将丢失cron调用的任何进程。
不知道在这种情况下会有哪些详细信息或参考。 这不像有人委托研究来研究这个问题。
假设您的命令足够智能,一次只能执行一次(从您发布的错误消息来看,情况似乎如此),那么唯一的不良影响就是几个CPU时钟周期(我认为)。
-
我所说的详细信息或参考文献是我不想要答案为I think it...的答案。
-
哈! =>让我微笑。