2017-01-01 32 views
0

我試圖在我的AWS EC2實例中爲ec2-user設置1月1日的cron作業。 當我做crontab -u ec2-user -l,它顯示下面的輸出:如何安排Linux AMI上的Laravel應用程序的年度cron作業?

* * * * * usr/bin/php /var/www/html/artisan schedule:run >> /dev/null 2>&1 

不過儘管以下是以Kernel.php成立,工作從來沒有發射:

protected $commands = [ 
    // Commands\Inspire::class, 
    Commands\TestYearlyJob::class, 
]; 

protected function schedule(Schedule $schedule) 
{ 
    $schedule->command('table:test-yearly-job')->cron('0 0 1 1 *') 
     ->timezone('Europe/London') 
     ->appendOutputTo('../taskscheduler.log'); 
} 

命令本身由工匠運行(我雙重檢查),所以它的邏輯很好。

我想知道是否有辦法通過->yearly()->at()調度選項來做到這一點?或者可能用closure真相測驗?但我不確定在那裏輸入when()聲明的內容。請幫忙。

+0

根據世界上的哪個地方,你可能已經過了1月1日的00:00,或者它還沒有發生。你如何測試它? –

+0

當我將SSH登錄到我的服務器(位於倫敦地區)後,它爲我提供了我的時區(歐洲/倫敦)的正確日期。編輯:現在已過00:00 1月1日。 – omrakhur

+0

@omrakhur如果過去的00:00,你將如何再次測試1月1日的場景。 –

回答

1

Reference

我注意到cron功能有6顆星。試試->cron('0 0 1 1 * *')。此外yearly有同樣的表情,這樣你就可以在usr/bin/php嘗試用戶可以在本command(..)->yearly()->timezone(..)

更新

的問題是缺少//usr/bin/php解決了問題

+0

這有點令人困惑。在這個頁面上:http://www.nncron.ru/help/EN/working/cron-format.htm 它說它有六個星號。但不是在這一個:http://stackoverflow.com/questions/19502546/cronjob-for-1st-of-january-every-year – omrakhur

+0

@omrakhur是它的混亂,可能是後來的第六顆星。在2013年回答了stackoverflow。我也不知道 –

+0

它仍然沒有與六星級工作。 – omrakhur