2012-01-19 55 views
2

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

我检查了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 

回答

1

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

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

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

1

我在这样的情况下做些什么(通常是一个备份方案,我不希望由具有并行备份鞭打磁盘)是写一个脚本,cron的电话,并在脚本中有实际的任务连续运行。

喜欢的东西:

#!/bin/bash 

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

情况因人而异。

2

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