Abschaltung zu einem bestimmten Datum

Abschaltung zu einem bestimmten Datum

Ich weiß, dass man ein Herunterfahren für eine bestimmte Zeit planen kann, shutdown -h 21:45und dass man für solche Dinge keine Crontabs verwenden sollte, da sie sich wiederholen. Wie kann ich ein Herunterfahren für eine bestimmte Zeit planen?Datumetwa am 31. August um 20:00 Uhr?

Antwort1

Der atBefehl dient zum Planen einmaliger zukünftiger Ausführungen.

z.B

% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019

(das „<EOT>“ wurde durch Drücken von Strg-D erzeugt)

% atq
161     Sat Aug 31 20:00:00 2019 a sweh

Hier können Sie Ihren shutdownBefehl eingeben.

Antwort2

Obwohl atdies die naheliegende Vorgehensweise ist, denke ich, dass es auch Herunterfahren übersteht. Wenn die Maschine also vor dem geplanten Herunterfahren neu startet, wird sie möglicherweise zum geplanten Zeitpunkt erneut heruntergefahren. Daher können wir mit Bash und GNU Date ein verzögertes Herunterfahren verwenden.

/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))

NB: Dies ist nur auf eine Minute genau. Es funktioniert, indem die geplante Zeit und jetzt in Sekunden seit der UNIX-Epoche umgerechnet werden, die Differenz berechnet, in Minuten umgerechnet und diese dann als Verzögerung bis zum Herunterfahren verwendet wird. Es funktioniert nicht richtig, wenn die geplante Zeit in der Vergangenheit liegt.

Antwort3

Neuere Ubuntu-Versionen verwenden systemd und wenn der herkömmliche atdund zugehörige atScheduler für einmalige Befehle entweder nicht installiert ist oder nicht ausgeführt wirdEin einmaliger Befehl kann geplant werden mitsystemd-run Das ist etwas einfacher als die manuelle Generierung einessystemd timer:

 systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now

Antwort4

So führen Sie den Job nur in diesem Jahr aus:

0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now

So führen Sie den Job jedes Jahr aus:

0 20 31 8 * /sbin/shutdown now

verwandte Informationen