Upline: Infos & Dokus Administration Linux Linux manpages

man shutdown


shutdown ist der Standardbefehl, um ein System herunterzufahren oder neu zu starten. Heute wird shutdown meist indirekt über halt, reboot bzw. poweroff aufgerufen. Der Vorteil von shutdown gegenüber einem einfachen halt etc. ist, dass man auch eine Art Countdown nutzen kann, so dass evtl. noch angemeldete User ihre Daten speichern und sich ausloggen können. Hierzu werden auf die Konsolen angemeldeter User entsprechende Warnmeldungen geschrieben. Leider funktioniert dies (getestet auf einem Debian Sarge mit 2.6er Kernel) nicht unbedingt immer wie erwartet und auch bei anderen Funktionalitäten ist etwas Übung und Herumprobieren vor dem Einsatz im Produktivbetrieb sehr empfehlenswert. Bei einigen Varianten der Falscheingabe (falsche Parameter oder Reihenfolge) wird eine entsprechende Fehlermeldung ausgegeben, bei anderen gibt es diese Meldung nicht und stattdessen wird shutdown nicht beendet und fährt das System nach der angegebenen Zeit herunter. Das Herunterfahren läßt sich auf der ausführenden Konsole mit <Ctrl>+<c> abbrechen, von anderen Konsolen mit einem shutdown -c. Die Warnmeldungen werden nur dann ausgegeben, wenn man die Eingabe wie folgt vornimmt:
# shutdown -t100 -k now Warnmeldung
oder:
# shutdown -t100 -r now Warnmeldung
Hierbei ist die doppelte Zeitangabe auffällig, wobei scheinbar nur eine davon (nämlich "now") ausgewertet wird und merkwürdiger Weise läßt sich der Shutdown auch nicht wie eigentlich vorgesehen mit einem shutdown -c abbrechen. Will man einen Shutdown mit vorheriger Warnmeldung, so muss man scheinbar (bei dem von mir für diese Anleitung getesteten System) erst die Meldung mit Hilfe des Parameters -k ausgeben und anschließend den echten Shutdown ausführen, welcher keine Meldung absetzt bzw. erst direkt vor dem Herunterfahren und somit zu spät für die User. Weitere Beispiele:
# shutdown -r +100
# shutdown -c
# shutdown -h now
Die erste Zeile bewirkt, dass das System in 100min (ohne das "+" wären es 100 Sekunden) neu gestartet wird. Die Konsole, auf der dieser Befehl abgeschickt wurde, wird für weitere Eingaben gesperrt, da shutdown sich hier nicht automatisch selbst beendet. Dadurch kann man vor Ablauf der übergebenen Zeit mit einem <Ctrl>+<c> den Shutdown wieder abbrechen. Die 2. Zeile auf einer anderen Konsole eingegeben bewirkt selbiges. Mit der Syntax der 3. Zeile fährt man das System sofort herunter.
Die unter der GPL stehende Original-Version der Manpage zu dem Befehl shutdown existiert bisher (Stand 2006) auch bei Installation der deutschen Hilfe nur in Englisch. Die nachfolgende Übersetzung ist demzufolge keine "offizielle" Übersetzung.

NAME

shutdown - das System herunterfahren

ÜBERSICHT

/sbin/shutdown [-t sec] [-arkhncfFHP] time [warning-message]

BESCHREIBUNG

shutdown fährt das System auf sichere Weise herunter. Alle angemeldeten Benutzer werden benachrichtigt, dass das System heruntergefahren wird und login(1) wird blockiert. Es ist möglich, das System sofort oder nach einem angegebenen Zeitpunkt herunterzufahren. Alle Prozesse werden mittels des Signals SIGTERM davon informiert, dass das System heruntergefahren wird. Das gibt Programmen wie vi(1) Zeit, die bearbeitete Datei zu speichern, Mail- und News-Programme können sauber beendet werden usw. shutdown arbeitet indem es dem init-Prozess signalisiert, dass das Runlevel geändert werden soll. Runlevel 0 wird zum Anhalten, Runlevel 6 zum Neustarten des Systems verwendet. Wird keiner der Parameter -h oder -r angegeben, so wird das System in Runlevel 1 für administrative Aufgaben gesetzt. In der Datei /etc/inittab kann man nachsehen, welche Aktionen bei einem Herunterfahren oder Neustarten des Systems über die zugehörigen Einträge ausgeführt werden.

Optionen

-a Verwende /etc/shutdown.allow.
-t sec Teile init(8) mit, sec Sekunden zwischen der Warnung und dem kill-Signal zu warten, bevor in ein anderes Runlevel gewechselt wird.
-k Fahre nicht wirklich herunter, schicke nur die Warnmeldung an alle Benutzer.
-r Starte nach dem Shutdown neu.
-h Nach dem Shutdown das System anhalten oder ausschalten.
-H Die Aufgabe von halt ist es, dass System anzuhalten oder in den Boot-Monitor zu schalten, falls dies unterstützt wird.
-P Die Aufgabe von halt ist es, dass System auszuschalten.
-n [überflüssig] Rufe nicht init(8) auf, sondern führe den Shutdown selbst durch. Von der Benutzung dieser Option wird abgeraten und die Ergebnisse sind nicht immer wie erwartet.
-f Überspringe fsck beim Neustart.
-F Führe fsck beim Neustart aus.
-c Beende einen bereits laufenden Shutdown. Mit dieser Option kann man natürlich keine Zeitangabe (time) machen, aber man kann eine Informations-Message an alle User schicken.
time Wann soll heruntergefahren werden.
warning-message Die Warnmeldung, die an alle User geschickt werden soll.

Das Zeitargument time kann unterschiedliche Formate haben. Zum einen kann es eine absolute Zeitangabe in der Form hh:mm (hh Stunden, mm Minuten, 1- oder 2-stellig) sein, zum anderen kann es eine Angabe in der Form +m sein, in welcher m die Anzahl der zu wartenden Minuten ist. Das Wort now ist ein Alias für +0.

Wenn shutdown mit einer Verzögerungszeit aufgerufen wurde, legt es die Datei /etc/nologin an, welche dafür sorgt, dass Programme wie login(1) keine neuen Logins zulassen. Falls shutdown vor dem Aufruf von init gestoppt wird, entfernt es die Datei. Es entfernt diese auch vor dem Aufruf von init zum Runlevel-Wechsel.

Der Parameter -f bedeutet `reboot fast' (schneller Neustart). Dies legt die Datei /fastboot an, welche vom System auf Vorhandensein geprüft wird, wenn es wieder hochfährt. Die boot-rc-Datei testet, ob diese Schnellstart-Datei vorhanden ist und wenn ja, wird fsck(1) nicht ausgeführt. Beim nächsten normalen Shutdown wird die Datei /fastboot wieder entfernt.

Der Parameter -F bedeutet `force fsck' (fsck ausführen). Dies legt die Datei /forcefsck an, welche vom System auf Vorhandensein geprüft wird, wenn es wieder hochfährt. Die boot-rc-Datei testet, ob diese Datei vorhanden ist und wenn ja, wird fsck(1) mit einem speziellen `force'-Flag ausgeführt, so dass auch korrekt ungemountete Dateisysteme gecheckt werden. Anschließend wird die Datei /forcefsck vom Bootprozess entfernt.

Der Parameter -n bewirkt, dass shutdown nicht init aufruft, sondern alle laufenden Prozesse selbst beendet. Anschleißend werden die Quotas, das Accounting und das Swapping deaktiviert und schließlich die Dateisysteme ungemountet.

Zugriffskontrolle

shutdown kann von init(8) aufgerufen werden, wenn die Tastenkombination CTRL-ALT-DEL gedrückt wird und ein entsprechender Eintrag in der Datei /etc/inittab vorhanden ist. Das bedeutet, dass jeder, der physikalischen Zugang zu einer Tastatur mit angemeldeter Konsole hat, das System herunterfahren kann. Um dies zu vermeiden, kann shutdown überprüfen, ob ein authorisierter User auf einer der virtuellen Konsolen angemeldet ist. Wenn shutdown mit dem Argument -a aufgerufen wird (falls nicht vorhanden füge das in die entsprechende Zeile der /etc/inittab ein), dann wird überprüft, ob die Datei /etc/shutdown.allow vorhanden ist. Anschließend werden die dort enthaltenen Loginnamen mit den an der virtuellen Konsole angemeldeten Usern (von /var/run/utmp) verglichen. Nur wenn einer der dort authorisierten User oder Root angemeldet ist, wird der Vorgang fortgesetzt. Alternativ wird die Meldung shutdown: no authorized users logged in auf der (physikalischen) Konsole ausgegeben. Das Format der Datei /etc/shutdown.allow ist ein Username pro Zeile. Leerzeilen und mit # auskommentierte Zeilen sind erlaubt. Aktuell besteht ein Limit von 32 Usern in dieser Datei. Falls die Datei /etc/shutdown.allow nicht existiert, so wird der Parameter -a ignoriert.

HALT oder POWEROFF

Der Parameter-H setzt die init-Umgebungsvariable INIT_HALT auf HALT und der Parameter -P setzt diese Variable auf POWEROFF. Das shutdown-Script, welches als letztes in der Shutdown-Sequence halt(8) aufruft, sollte diese Umgebungsvariable überprüfen und halt(8) mit den entsprechenden Parametern aufrufen, um den gewünschten Effekt zu erreichen. Debian 3.1 (sarge) unterstützt dies.

Dateien

/fastboot
/etc/inittab
/etc/init.d/halt
/etc/init.d/reboot
/etc/shutdown.allow

Hinweise

Viele User vergessen die Zeitangabe zu machen und rätseln anschließend über die erzeugte Fehlermeldung. Das Zeitargument ist obligatorisch und in 90% der Fälle ist dieses Argument das Wort now.
Init kann nur im Konsolen-Modus CTRL-ALT-DEL auswerten und shutdown ausführen. Wenn das System X Window ausführt, dann wertet der X Server alle Tastendrücke aus. Einige X11-Umgebungen ermöglichen es CTRL-ALT-DEL mitzuschneiden, aber was dann für Ereignisse ausgelöst werden, hängt von dieser Umgebung ab.
Shutdown kann nicht setuid auswerten. /etc/shutdown.allow kann nicht auswerten, wer shutdown ausführt, es überprüft nur wer aktuell auf (irgend-)einer der Konsolen angemeldet ist.

AUTOR

Geschrieben von Miquel van Smoorenburg, miquels@cistron.nl

Siehe auch

fsck(8), init(8), halt(8), poweroff(8), reboot(8)

COPYRIGHT

Copyright (C) 2001 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen.
Es gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE.
November 12, 2003 SHUTDOWN(8)