it-swarm.com.de

Was ist der Unterschied zwischen dem Herunterfahren um 18:00 Uhr und dem Herunterfahren um 18:00 Uhr?

at 18:00 shutdown now und shutdown 18:00, starten sie den gleichen Dienst? Arbeiten sie genauso?

30
yang

at 18:00 shutdown now erstellt einen "at" -Job, der je nach System zum angegebenen Zeitpunkt vom at -Dämon oder möglicherweise vom cron -Dämon ausgeführt wird.

shutdown 18:00 startet einen Prozess in Ihrer Shell, der bis zur angegebenen Zeit wartet und dann das Herunterfahren durchführt. Dieser Befehl kann beendet werden, wenn z. Ihre Shell-Sitzung wird beendet.

Das Nettoergebnis ist in den meisten Fällen dasselbe: Das System wird um 18:00 Uhr heruntergefahren.

Ein Unterschied besteht darin, dass der Job gespeichert wird, wenn Sie at verwenden. Wenn das System vor 18:00 Uhr auf andere Weise heruntergefahren wird, wartet der Job beim erneuten Booten immer noch darauf, ausgeführt zu werden. Wenn die Zeit bereits abgelaufen ist, wird das Herunterfahren sofort durchgeführt, was ziemlich unerwartet sein kann.

Ein weiterer Unterschied ist, dass shutdown 18:00 erstellt ein /run/nologin Datei 5 Minuten vor der geplanten Zeit, um zu verhindern, dass sich Personen nach diesem Moment anmelden. Außerdem werden Broadcast-Nachrichten gesendet, um angemeldete Benutzer vor dem Herunterfahren des Systems zu warnen.

Sie müssen diese Unterschiede berücksichtigen, um zu entscheiden, welche Sie verwenden möchten.

48
wurtel

Und jetzt antwortet das System.

Wenn Sie CentOS 7 haben, haben Sie ein Betriebssystem und die Antwort ist anders.

at 18:00 shutdown now Wird weiterhin über das Subsystem at geplant, aber der Befehl shutdown sowie der Befehl, den Sie direkt mit shutdown 18:00 Aufrufen, unterscheiden sich. Es ist eigentlich das systemctl Programm von systemd. systemctl macht die Dinge anders.

Zunächst sendet systemctl die geplante Anforderung zum Herunterfahren aus, um von einem Dæmon verarbeitet zu werden, ähnlich wie im Fall at. Dies ist jedoch ein systemd-Dæmon, insbesondere logind (das systemd-shutdownd Dæmon wurde im Mai 2015 aus systemd entfernt, dessen Änderung sich seitdem auf spätere Nebenversionen von CentOS 7 ausgewirkt hat), nicht das at Subsystem. systemctl spricht ein internes Protokoll mit einem (systemweiten) Desktop Bus-Broker, der wiederum mit logind kommuniziert.

Also, wie im Fall at, gibt es keinen shutdown Prozess, der dort herunterzählt und die wall Nachrichten erzeugt. Man kann sich also abmelden und dies hat keinen Einfluss auf den Zeitplan. Das Abbrechen ist nicht so einfach wie das Unterbrechen/Beenden des Vordergrundprozesses der Anmeldesitzung. Genau wie bei at.

Es gibt noch Nachrichten, anders als im Fall at, aber sie werden von logind ausgegeben. Im Gegensatz zum Fall at bleibt der geplante Job auch bei Systemneustarts nicht bestehen, sodass beim tatsächlichen Herunterfahren ein geplanter Job abgebrochen wird. Es gibt eine Datei im Dateisystem, aber sie befindet sich unter /run/systemd/shutdown Und ist ein nicht persistenter Speicher.

Weitere Unterschiede bestehen darin, dass jeweils nur ein geplantes Herunterfahren durchgeführt werden kann, während mehrere at Jobs übergeben werden können, und Policy Kit wird dies tun Wenden Sie Regeln auf shutdown an, die im Kontext einer Nicht-Anmeldesitzung als at Job ausgeführt werden und sich von den Regeln unterscheiden, die auf shutdown angewendet werden, die im Kontext der Anmeldesitzung ausgeführt werden. Letzteres ist möglicherweise freizügiger und ermöglicht (sagen wir) einem nicht privilegierten Benutzer, der bei der aktiven Anmeldesitzung angemeldet ist, das System herunterzufahren.

Weiterführende Literatur

23
JdeBP