如果我有一个每10分钟运行一次的cron作业,但由于某种原因这一次作业需要12分钟才能完成,那么cron会在之前的作业仍在运行时启动另一个实例吗?如果是这样,如何在Linux上防止这种情况发生?
是的,会产生影响。
你应该让你的程序创建一个 .pid 文件(例如在 /var/run/ 目录下)。当程序启动时,它应该检查是否已存在这样的文件,如果是,则退出。
你正在运行哪个程序/脚本?
是的。Cron会在预定间隔时间触发进程,无论之前的进程是否完成。
您可以像另一个答案中所述那样touch
一个文件,并在启动进程之前检查其是否存在。
或者您可以检查进程列表,看看是否已经运行了“实例”:
ps -ef | grep *your_script_name* | grep -v grep | wc -l