2017-01-01 3 views
0

Ich versuche, einen Cron-Job für den 1. Januar auf meiner AWS EC2-Instanz für ec2-user einzurichten. Wenn ich crontab -u ec2-user -l tun, es zeigt die folgende Ausgabe:Wie planen Sie einen jährlichen Cron Job für eine Laravel App auf Linux AMI?

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

Aber auch wenn die folgenden in Kernel.php eingerichtet wurde, wird der Auftrag nie gefeuert:

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'); 
} 

Der Befehl selbst von Artisan läuft (I habe doppelt überprüft, so ist seine Logik in Ordnung.

Ich frage mich, ob es eine Möglichkeit gibt, es mit der Zeitplanungsoption ->yearly()->at() zu tun? Oder vielleicht mit einem closure Wahrheitstest? Aber ich bin mir nicht sicher, was ich dort für eine when() Aussage setzen soll. Bitte helfen Sie.

+0

Abhängig davon, wo in der Welt Sie sind vielleicht ist es bereits nach 00:00 1. Januar, oder es ist noch nicht geschehen. Wie testen Sie es? –

+0

Nachdem ich SSH in meinen Server (der in der Region London ist) SSH, gibt es mir das richtige Datum für meine Zeitzone (Europa/London). Edit: Es ist nach 00:00 1. Januar hier. – omrakhur

+0

@omrakhur Wie werden Sie das 1. Januar-Szenario erneut testen, wenn es nach 00:00 Uhr ist. –

Antwort

1

Reference

Ich bemerkte cron Funktion 6 Sterne hat. Versuchen Sie ->cron('0 0 1 1 * *'). Auch yearly hat den gleichen Ausdruck, so können Sie versuchen, entweder diese command(..)->yearly()->timezone(..)

aktualisieren

Das Problem / in usr/bin/php fehlt. /usr/bin/php behebt das Problem

+0

Es ist ein bisschen verwirrend. Auf dieser Seite: http://www.nncron.ru/help/EN/working/cron-format.htm heißt es, es hat sechs Sternchen. Aber nicht auf diesem: http://stackoverflow.com/questions/19502546/cronjob-for-1st-of-january-every-year – omrakhur

+0

@omrakhur Ja, es ist verwirrend, vielleicht der sechste Stern kam später. Der Stackoverflow, beantwortet im Jahr 2013. Ich weiß auch nicht –

+0

Es funktioniert immer noch nicht mit den sechs Sternen. – omrakhur