So führen Sie geplante Aufgaben unter Ubuntu mit einer Zeile aus Laravel aus

So führen Sie geplante Aufgaben unter Ubuntu mit einer Zeile aus Laravel aus

Ich muss sudo php artisan backup:runjeden Tag um 15 Uhr das Passwort ausführen und automatisch eingeben. Ich weiß, wie das unter Windows geht, indem ich einfach den Taskplaner verwende und im .bat-Skript „Als Administrator ausführen“ einstelle.

Antwort1

Das istsollenist unter Ubuntu 14.04 weitgehend identisch mit den neuesten Versionen – es können jedoch einige Unterschiede bestehen.

Die Aufgabe gliedert sich in zwei Teile:

  • sudoUm dies ohne Kennwort tun zu können , fügen Sie den Benutzer zur sudoersDatei hinzu und ermöglichen Sie ihm, kein Kennwort anzufordern.
  • Um einen Job automatisch auszuführen, verwenden Sie cron.

sudoers

Fügen Sie den Benutzer zur Sudo-Gruppe hinzu mit

usermod -aG sudo <username>

Wechseln Sie <username>zu dem Benutzer, als der Sie den Job ausführen möchten.

Um die Eingabe des Passworts zu vermeiden, bearbeiten Sie die /etc/sudoersDatei:

visudo

und fügen Sie am Ende der Datei die folgende Zeile hinzu:

<username>  ALL=(ALL) NOPASSWD:ALL

Wechseln Sie erneut <username>zu dem Benutzer, als der Sie den Job ausführen möchten.

Beachten Sie, dass es besser wäre, für Ihren bestimmten Benutzer eine neue Sudoers-Datei zu erstellen, anstatt die Haupt-Sudoers-Datei wie folgt zu bearbeiten:

echo "<username>  ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/username

Weitere Informationen finden Sie unterSo fügen Sie in Ubuntu einen Benutzer zu Sudoers hinzu.

Siehe auch diese Frage,Wie kann ich über die Befehlszeile einen Benutzer als neuen Sudoer hinzufügen?

cron

cron ist sehr leistungsfähig und bietet viele verschiedene Optionen. Um Ihre Aufgabe zu erfüllen, sind hier jedoch nur die grundlegenden Dinge:

Um die Crontab zu bearbeiten, verwenden Sie

crontab -e

oder für einen anderen Benutzer verwenden

crontab -u ostechnix -e

Wenn Sie crontab noch nie ausgeführt haben, werden Sie beim ersten Ausführen möglicherweise aufgefordert, einen Editor auszuwählen.

Fügen Sie dann für einen Job um 15:00 Uhr die Zeile hinzu

0 15 * * * <command-to-execute>

Verwenden Sie in Ihrem Fall also

0 15 * * * sudo php artisan backup:run

Speichern und zum Editor zurückkehren. Um die Crontab zu überprüfen, verwenden Sie

crontab -l

Wenn Sie die Zeit ändern möchten, lauten die Felder wie folgt (siehe Cron-Manpage).

       The time and date fields are:

              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              day of month   1-31
              month          1-12 (or names, see below)
              day of week    0-7 (0 or 7 is Sunday, or use names)

       A field may contain an asterisk (*), which always stands for
       "first-last".

Weitere Informationen zu crontabfinden Sie unterEin Leitfaden für Anfänger zu Cron-Jobsoder geben Sie ein man cron.

Siehe auch diese Frage,Wie richte ich einen Cron-Job ein?

verwandte Informationen