2017-02-21 60 views
0

我有7個cron-jobs必須按照指定的順序運行!如果另一個結束,開始一個Cronjob?

所以我必須調用它們才能。但是我的問題是,如果我的最後一個cronjob完成了,我怎麼能觸發下一個cronjob?

我想我寫一個腳本,每次觸發,但的cronjob觸發下一個我需要知道,如果我最後的cronjob已經結束。

我喜歡PHP

+0

這聽起來就像你只需要一個包含7個腳本的cronjob。 – jeroen

+0

如果他們必須以預定義的順序運行,將它們加入* one *腳本不是更聰明嗎? –

+0

的最快方法(和hackish的),如果你沒有太多的cron作業是使用分號像這樣列出它們在corntab:「* * * * * cron1_command; cron2_command >> /ptah/to/log.txt」 –

回答

0

可以創建一個shell腳本或做這樣的事情:

0 */5 * * * php /var/www/html/project1/cron.php && php /var/www/html/project2/cron.php && php /var/www/html/project3/cron.php 

如果你想有一個PHP腳本來爲你做的工作,並記錄其輸出,做這樣的東西

ini_set('memory_limit','8196M'); 
$date=date('mdY'); 
if(!file_exists($date."_ENK.zip")) 
{ 
echo "sh get_files.sh ".$date."_ENK.zip\n"; 
echo "DOWNLOADING FILE\n"; 
echo popen("sh get_files.sh ".$date."_ENK.zip >> get_log",'r'); 
echo "MOVING FILE\n"; 
echo exec("mv ".$date.".csv ../../data/data.csv"); 
echo "IMPORTING INTO DATABASE\n"; 
echo exec("php /var/www/html/project1/index.php Engines dothings"); 
echo "DUMPING INTO TEMP FOLDER\n"; 
echo exec("mysqldump -u user db tab > /tmp/tab.sql"); 
echo "UPDATING\n"; 
echo exec("mysql -u far_user -ppass -h 10.0.0.1 db_away < /tmp/tab.sql"); 
echo "CLEANING UP"; 
echo exec("rm -f /tmp/tab.sql"); 
echo exec("rm -f ../../data/data.csv"); 
echo exec("rm -f somefile.zip"); 
} 
相關問題