Skip to content

Wie kann man Linux zu einem bestimmten Datum vom Terminal aus herunterfahren?

Lösung:

Sie können dies direkt von der shutdown command, sehen man shutdown:

SYNOPSIS
   /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]

[...]

   time   When to shutdown.

Also zum Beispiel:

shutdown -h 21:45

Das wird laufen shutdown -h um 21:45 Uhr.


Für Befehle, die diese Funktionalität nicht bieten, können Sie einen der folgenden ausprobieren:

A. Verwenden von at

Die at daemon ist genau dafür ausgelegt. Abhängig von Ihrem Betriebssystem müssen Sie es möglicherweise installieren. Auf Debian-basierten Systemen kann dies folgendermaßen erfolgen:

sudo apt-get install at

Es gibt drei Möglichkeiten, einen Befehl an . zu erteilen at:

  1. Pipe es:

    $ echo "ls > a.txt" | at now + 1 min
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  2. Speichern Sie den Befehl, den Sie ausführen möchten, in einer Textdatei und übergeben Sie diese Datei dann an at:

    $ echo "ls > a.txt" > cmd.txt
    $ at now + 1 min < cmd.txt
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  3. Du kannst auch passieren at Befehle von STDIN:

    $ at now + 1 min
    warning: commands will be executed using /bin/sh
    at> ls
    

    Dann drücken StrgD die verlassen at Hülse. Die ls Befehl wird in einer Minute ausgeführt.

Sie können sehr genaue Zeiten im Format von angeben [[CC]YY]MMDDhhmm[.ss], wie in

$ at -t 201403142134.12 < script.sh

Dadurch wird das Skript ausgeführt script.sh um 21:34 und 12 Sekunden am 14. März 2014.

B. Cron verwenden (obwohl dies keine gute Idee zum Herunterfahren ist)

Der andere Ansatz ist die Verwendung der cron Scheduler, der dafür ausgelegt ist, Aufgaben zu bestimmten Zeiten auszuführen. Es wird normalerweise für Aufgaben verwendet, die sich wiederholen, aber Sie können auch eine bestimmte Zeit angeben. Jeder Benutzer hat seine eigenen "crontabs", die steuern, welche Jobs wann ausgeführt werden. Das allgemeine Format einer Crontab ist:

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

Das wird zum Beispiel ausgeführt ls jeden Tag um 14:04:

04 14 * * * ls

So richten Sie einen Cronjob für ein bestimmtes Datum ein:

  1. Erstellen Sie eine neue Crontab, indem Sie ausführen crontab -e. Dies öffnet ein Fenster Ihres bevorzugten Texteditors.

  2. Fügen Sie diese Zeile der gerade geöffneten Datei hinzu. Dieses spezielle Beispiel wird am 15. März 2014 um 14:34 Uhr ausgeführt, wenn dieser Tag ein Freitag ist (also, OK, es kann mehr als einmal ausgeführt werden):

    34 14 15 5  /path/to/command        
    
  3. Speichern Sie die Datei und beenden Sie den Editor.

Diese SO-Antwort schlägt eine Möglichkeit vor, sie nur einmal ausführen zu lassen, aber ich habe sie noch nie verwendet, daher kann ich nicht dafür bürgen.

Nein, Sie können beim Shutdown-Befehl kein Datum angeben, aber es gibt zwei Alternativen:

1) Am einfachsten ist es, den Befehl at zu verwenden. Das folgende Beispiel wird ausgeführt shutdown +5 zu einer bestimmten Uhrzeit und an einem bestimmten Tag:

echo "shutdown +5" | at 10:05am 2019-01-19

2) Wenn es Ihnen nichts ausmacht, Ihren Taschenrechner zu benutzen und Sie in sagen wir 24 Stunden (24 * 60 = 1440 Minuten) herunterfahren möchten und absolut sicher sind, dass das System zwischendurch nicht neu gestartet wird:

shutdown -r +1440

Es wird Ihr System um 12:00 Uhr herunterfahren:

$ sudo shutdown -h 12:00

Optionen:

-h, -P, --poweroff

Schalten Sie die Maschine aus.

-r, --reboot

Starten Sie die Maschine neu.

-c

Brechen Sie ein ausstehendes Herunterfahren ab.

Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.