2009-05-28 163 views
9

如果我有一个每10分钟运行一次的cron作业,并且出于某种原因,这一次需要12分钟来运行作业,那么cron会在前一个作业仍在运行时启动另一个代码实例吗?如果是的话,你怎么能防止这在Linux上?运行Cron作业

回答

10

是的,它会的。

您应该让程序创建一个.pid文件(例如在/ var/run /中)。当它启动时,它应该检查这个文件是否已经存在,如果是,退出。

你正在运行哪个程序/脚本?

+0

我运行一个PHP脚本来发送邮件。 – 2009-05-28 20:33:15

+0

这样的事情会做的伎俩,然后http://www.dreamincode.net/code/snippet2407.htm – MartinodF 2009-05-29 02:32:11

+0

你能告诉我们如何做到这一点snipet? – oneofakind 2014-04-15 17:21:18

3

是的。不管前一个还没有完成,Cron将按照预定的时间间隔启动一个进程。

您可以touch一个文件,如另一个答案中所述,并在进行您的过程之前检查它的存在。

或者你可以检查,看看进程列表,如果“实例”已经在运行:

ps -ef | grep *your_script_name* | grep -v grep | wc -l