25.10 System-Shutdown
Es gibt verschiedene Programme, um Linux und BSD herunterzufahren oder neu zu starten. Die einfachste Möglichkeit besteht darin, dies via Maus über einen grafischen Login, etwa kdm, zu bewerkstelligen oder beim normalen Login-Prompt die bei den meisten Distributionen definierte Kombination Strg+Alt+Entf zu drücken.
Alle anderen Programme benötigen die Privilegien eines Systemadministrators und können daher nicht von jedermann ausgeführt werden. <Ausnahme: Benutzern wird via sudo die Berechtigung dazu erteilt.> Um das System sicher herunterzufahren, wird folgende Vorgehensweise angewandt:
1. | Alle Benutzer, die momentan eingeloggt sind, werden darüber informiert, dass das System gleich oder in einer bestimmten Zeitspanne herunterfährt. |
2. | Neue Login-Versuche werden abgewiesen. |
3. | Wurde eine Wartezeit definiert, wird gewartet, bis diese Zeitspanne abgelaufen ist. Während dieser Zeit unternimmt das jeweilige Shutdown-Programm nichts. |
4. | Das Shutdown-Programm sendet allen Prozessen das SIGTERM-Signal. Das bietet diesen Programmen die Möglichkeit, auf das Signal zu reagieren und sich sicher zu beenden. Editoren können so beispielsweise eine Sicherungskopie einer veränderten Datei speichern, ohne dass sich ein Benutzer darum kümmern muss – er könnte sich ja gerade einen Kaffee zubereiten und vom Shutdown nichts mitbekommen. |
5. | Anschließend wird init je nach Programm und gewünschter Aktion in den Runlevel 0 (System anhalten, halt) oder in den Runlevel 6 (System wird neu gestartet, reboot) versetzt. Vor dem eigentlichen Halt oder Reboot werden natürlich alle Dateisysteme sauber ausgehängt. |
25.10.1 halt, reboot und poweroff
Die Tools halt, reboot und poweroff dienen dazu, das System herunterzufahren beziehungsweise zu rebooten. Dabei wird in der Datei /var/log/wtmp das Herunterfahren des Systems vermerkt. Sowohl halt als auch poweroff fahren das System so herunter, dass man es ausschalten kann. Bei poweroff schaltet es sich bei neueren Rechnern automatisch selbst ab. Ruft man halt mit dem Parameter -p auf, wird dies ebenfalls geschehen. reboot startet das System zudem neu.
Egal welches dieser drei Programme Sie verwenden, es wird jeweils – zumindest sofern sich das System nicht im Runlevel 0 oder 6 befindet, also gerade herunterfährt – ein anderes Programm, nämlich shutdown aufgerufen, um die gewünschten Aktionen durchzuführen. Schauen wir uns also shutdown einmal an.
25.10.2 shutdown
Um das System sicher und nach Ihren Wünschen herunterzufahren, sollten Sie das shutdown-Kommando verwenden.
Mit ihm lässt sich das System sowohl herunterfahren als auch neu starten. Zusätzlich können Warnmeldungen an die noch eingeloggten Benutzer versendet und der genaue Zeitpunkt des Shutdowns festgelegt werden.
Parameter | Beschreibung |
-c | Ein geplanter Shutdown wird abgebrochen. |
-F | Führt den Dateisystem-Check nach dem Neustart durch. |
-f | Unterbindet den eventuellen Dateisystem-Check nach dem Neustart. |
-h | Das System kann nach dem Shutdown ausgeschaltet werden (halt). |
-k | Das System wird nicht wirklich heruntergefahren, es wird nur eine Warnmeldung an die Terminals der Benutzer versendet. |
-r | Das System wird nach dem Shutdown neu gestartet (reboot). |
-p | Dieser Parameter wird nicht von jedem System unterstützt und sorgt dafür, dass das System nach dem Herunterfahren ausgeschaltet wird. Dieses Feature funktioniert nicht bei älteren Netzteilen. |
Zudem kann shutdown ein Zeitparameter übergeben werden. Im Gegensatz zum Parameter -t wird dabei nicht die zu wartende Zeit vor dem Shutdown in Sekunden, sondern der explizite Zeitpunkt des Shutdowns angegeben.
Dieser Parameter muss hinter allen anderen stehen – hinter ihn dürfen Sie nur eine Warnung an die Benutzer schreiben.
# shutdown [-t sec] [weitere Parameter] \ Zeitparameter [Warnung]
Listing 25.29 shutdown nutzen
Der einzige Parameter, den Sie immer übergeben müssen, ist der Shutdown-Zeitpunkt. Es gibt verschiedene Möglichkeiten, diese Zeit anzugeben. Normalerweise wird das Schlüsselwort now verwendet, um das System sofort herunterzufahren.
Sie können jedoch auch Stunde und Minute in der Form hh:mm angeben.
Hier sehen Sie ein Beispiel für einen sofortigen Shutdown mit anschließendem Neustart und Dateisystem-Check:
# shutdown -rF now Broadcast message from root (pts/0) (Mon Aug 8 20:35:27 2005): The system is going down for reboot NOW! INIT: Switching to runlevel: 6 INIT: Sending processes the KILL signal Running shutdown script /etc/rc.d/rc.6: ... Rebooting the system.
Listing 25.30 So wird's gemacht.
Unter OpenBSD lässt sich zusätzlich Shellskript-Code beim Shutdown durch shutdown, halt oder reboot ausführen, indem man diesen Shell-Code in die Datei /etc/rc.shutdown einfügt.
Als letzter Hinweis sei erwähnt, dass man den Benutzern, die unter Linux eine Shutdown-Berechtigung erhalten sollen, auch ohne sudo dieses spezielle Recht verleihen kann. Dazu trägt man die jeweiligen Benutzernamen in die Datei /etc/shutdown.allow ein.