运行Cron作业

9

如果我有一个每10分钟运行一次的cron作业,但由于某种原因这一次作业需要12分钟才能完成,那么cron会在之前的作业仍在运行时启动另一个实例吗?如果是这样,如何在Linux上防止这种情况发生?

2个回答

10

是的,会产生影响。

你应该让你的程序创建一个 .pid 文件(例如在 /var/run/ 目录下)。当程序启动时,它应该检查是否已存在这样的文件,如果是,则退出。

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


我正在运行一个 PHP 脚本来发送邮件。 - Tony Borf
这样做就可以了,然后访问http://www.dreamincode.net/code/snippet2407.htm。 - MartinodF

3

是的。Cron会在预定间隔时间触发进程,无论之前的进程是否完成。

您可以像另一个答案中所述那样touch一个文件,并在启动进程之前检查其是否存在。

或者您可以检查进程列表,看看是否已经运行了“实例”:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接