Cron追赶其他cron

时间:2012-01-19 05:55:01

标签: linux crontab

我想在另一个cron之后设置一个cron运行。例如:Cron A在01:00 PM完成,cron B将在01:01 PM开始。问题是我不知道cron A何时完成。

我检查了crontab语法。它没有为此目的提供任何参数。

我的实际情况是:

# This cron must run first.
? ? * * * /usr/local/bin/php -f /path/select_and_print_to_log_file.php

# two these crons runs at the same time.
0 13 * * * /usr/local/bin/php -f /path/update_user.php
0 13 * * * /usr/local/bin/php -f /path/update_image.php

# This cron runs right after two above cron completes.
? ? * * * /usr/local/bin/php -f /path/select_and_print_to_log_file.php

3 个答案:

答案 0 :(得分:2)

您可以使用第一个cron中的batch命令来安排第二个运行。

答案 1 :(得分:1)

在这种情况下我做的事情(通常是我不希望通过并发备份来破坏磁盘的备份方案)是编写一个cron调用的脚本,并在脚本中将实际任务串行运行。 / p>

类似的东西:

#!/bin/bash

/usr/local/bin/php -f /path/update_user.php
/usr/local/bin/someOtherTaskToRunSecond

因人而异。

答案 2 :(得分:1)

完成后,您的第一份工作可能会产生时间戳。

然后你估计 - 例如 - 工作A需要大约60到90分钟。 60分钟后,您开始工作B.工作b查找时间戳。如果它存在,作业B开始,否则它等待一分钟再看。

完成后,作业B删除时间戳,或重命名它,可能从'todo'到'done'。您可以在文件中插入当前日期,以检查您的估计是否仍然可以接受,或者应该进行调整。