2012-01-19 79 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命令來安排第二件事情的運行。