Antworten:
Sie können dies direkt aus dem tun shutdown command
, siehe man shutdown
:
SYNOPSIS
/sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]
[...]
time When to shutdown.
Also zum Beispiel:
shutdown -h 21:45
Das wird um shutdown -h
21:45 Uhr laufen .
Bei Befehlen, die diese Funktionalität nicht bieten, können Sie Folgendes versuchen:
Der 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 durchgeführt werden mit:
sudo apt-get install at
Es gibt drei Möglichkeiten, einen Befehl zu erteilen at
:
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
Speichern Sie den Befehl, den Sie in einer Textdatei ausführen möchten, und übergeben Sie diese Datei 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
Sie können auch at
Befehle von STDIN übergeben:
$ at now + 1 min
warning: commands will be executed using /bin/sh
at> ls
Drücken Sie dann, CtrlDum die at
Shell zu verlassen. Der ls
Befehl wird in einer Minute ausgeführt.
Sie können sehr genaue Zeiten im Format angeben [[CC]YY]MMDDhhmm[.ss]
, wie in
$ at -t 201403142134.12 < script.sh
Das Skript wird script.sh
am 14. März 2014 um 21:34 und 12 Sekunden ausgeführt.
Der andere Ansatz ist die Verwendung des cron
Schedulers, mit dem Aufgaben zu bestimmten Zeiten ausgeführt werden können. Es wird normalerweise für Aufgaben verwendet, die wiederholt werden. Sie können jedoch auch eine bestimmte Zeit angeben. Jeder Benutzer hat seine eigenen "Crontabs", die steuern, welche Jobs wann ausgeführt werden. Das allgemeine Format einer Crontab lautet:
* * * * * 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)
Dies wird zum Beispiel ls
jeden Tag um 14:04 Uhr ausgeführt:
04 14 * * * ls
So richten Sie einen Cronjob für ein bestimmtes Datum ein:
Erstellen Sie eine neue Crontab, indem Sie ausführen crontab -e
. Dies öffnet ein Fenster Ihres bevorzugten Texteditors.
Fügen Sie diese Zeile der gerade geöffneten Datei hinzu. Dieses Beispiel wird am 15. März 2014 um 14:34 Uhr ausgeführt, wenn dieser Tag ein Freitag ist (es kann also auch mehrmals ausgeführt werden):
34 14 15 5 /path/to/command
Speichern Sie die Datei und beenden Sie den Editor.
Diese SO-Antwort schlägt einen Weg vor, es nur einmal laufen zu lassen, aber ich habe es nie benutzt, deshalb kann ich nicht dafür bürgen.
shutdown
. Ich fühle für diese schlechte Erfahrung, das hätte nicht angenehm sein können.
shutdown
Planung mischen und cron
dieselbe Antwort erhalten ... Ob es sich um eine Workstation oder einen Mailserver mit 1000 Benutzern handelt (meine traurige Erfahrung), es geht mehr um die Konsequenzen einer schlechten Angewohnheit.
shutdown
sollte man nicht mit einbeziehen cron
. (Vor allem mit jemandem, der nicht weiß, warum das eine schreckliche Idee ist.)
Nein, Sie können beim Befehl shutdown kein Datum angeben, es gibt jedoch zwei Alternativen:
1) Am einfachsten ist es, den Befehl at zu verwenden . Das folgende Beispiel wird shutdown +5
zu einer bestimmten Uhrzeit und an einem bestimmten Tag ausgeführt:
echo "shutdown +5" | at 10:05am 2019-01-19
2) Wenn es Ihnen nichts ausmacht, Ihren Taschenrechner zu verwenden, und Sie sich innerhalb von 24 Stunden (24 * 60 = 1440 Minuten) ausschalten möchten, und Sie absolut sicher sind, dass das System zwischenzeitlich nicht neu gestartet wird:
shutdown -r +1440
at
Befehl erklärt.
at
verdient keine Erklärung. Ich kann sehen, dass du anders glaubst. Unterschiedliche Meinungen, unterschiedliche Ansichten.
shutdown
Befehle van Smoorenburg, Upstart und systemd erlauben keine Datumsangabe. Aber das nosh-Toolset shutdown
unterstützt die langjährige BSD-Syntax.
Es wird Ihr System um 12:00 Uhr herunterfahren:
$ sudo shutdown -h 12:00
Optionen:
-h, -P, --poweroff
Maschine ausschalten.
-r, --reboot
Starten Sie die Maschine neu.
-c
Abbrechen eines ausstehenden Herunterfahrens