System-V-init / rc.shutdown (War: Gibt es:)

From: Hans Huebner <hans(at)artcom.de>
Date: Thu, 28 May 1998 23:06:48 +0200 (CEST)

Joerg Wunsch wrote:

> Dir fehlt hier ein wenig Praxiserfahrung mit Maschinen, die etwas
> größer als der 08/15-Desktop sind. ;-)

Danke fuer den Hinweis.

> Es gibt durchaus Prozesse, die
> zwar auf SIGTERM ordentlich reagieren, aber einfach etwas mehr Zeit
> für ihren geordneten Rückzug benötigen als die sehr willkürlich
> festgelegten 10 Sekunden, nach denen derzeit init(8) dann ein SIGKILL
> sendet. Dazu gehören beispielsweise News- und Datenbankserver.

Ich moechte jedenfalls keinen Datenbankserver auf meiner Maschine haben,
bei dem ich ernsthaft etwas riskiere, wenn ich den Rechner ausschalte.
Die einzige Software, der ich noch zugestehen moechte, dass man Ihr vor
dem Abschalten eine Moeglichkeit zum geordneten Rueckzug laesst, ist das
Unix Fast File System (und das auch nur, so lange ich das wirklich noch
muss, wenn ich weiter FreeBSD benutzen will).

Eine wichtige Anwendung fuer einen Reboot ist die Ueberlastsituation. In
so einem Fall kann es durchaus sein, dass in den (standardmaessig
eingestellten) 10 Sekunden nicht jeder laufende Prozess vom System die
Chance bekommt, seinen SIGTERM-Handler auch auszufuehren.

In diesem Fall ist der Zweck des Reboots jedoch (zumindest, wenn ich meine
unwesentlichen Erfahrungen als Massstab ansetze) meist, dass man die
Maschine durch Rebooten wieder in einen benutzbaren Zustand ueberfuehren
will. Wenn in so einem Notzustand auch noch Shutdown-Skripte ausgefuehrt
werden muessen, ist die einzige Moeglichkeit, in endlicher Zeit mit dem
Rechner wieder am Start zu sein, der Resettaster oder Ausschalter.

Dann hat man das beliebte fsck-Problem, was bei den heutigen
Plattengroessen kleine Ewigkeiten in Anspruch nehmen kann (Alle schoen
'dran denken: Marshall Kirk McKusick unterstuetzen!). Bloss weil Unix
keinen Stromausfall verkraftet, muss man sonstiger Software nicht auch
derartiges Fehlverhalten durchgehen lassen, und tatsaechlich faellt mir
keine Anwendung ein, die mir wegen eines inkorrekten Shutdowns Daten in
den Muelleimer geschmissen haette. Von FFS-Filesystemen kann ich das
nicht behaupten.

> Oh, dann hast Du noch nicht genügend verschiedene SysV's gesehen. :-)

Erneut danke fuer den Hinweis auf die Anzahl der Maschinen, die Du schon
gesehen hast.

> Ob der default-Runlevel nun 2, 3 oder 4 heißt, ist beispielsweise
> durchaus sehr, sehr umstritten zwischen den diversen Versionen. 4
> heißt er bei HP, wenn Du das grafische Login haben willst. Zumindest
> war das bis vor kurzem noch so, kann sein, daß sie's mit dem Übergang
> von `vue' auf CDE auf 3 geändert haben. Ich habe auch schon einige
> Kisten gesehen, bei denen Level 2 bereits die volle Netzwerkfunktiona-
> lität bot.

Naja, die Diskussion um den "korrekten" Wert fuer den Default-Runlevel ist
ja wohl vollkommen ueberfluessig. Ich wage die Behauptung, dass 99.99%
aller Unix-Installationen mit /etc/inittab ueberhaupt nur ihren
initdefault wirklich verwenden, und die restlichen Runlevels nur dazu
dienen, den Reboot-Vorgang zu verschleiern (und funny fields in /etc/utmp
zu fuellen).

Ich moechte nicht in Abrede stellen, dass es sinnvolle Anwendungen fuer
einen SystemV-init gibt:

Eine Anwendung waere beispielsweise ein Default-Runlevel, bei dem nur
minimale Netzwerkfunktionalitaet sowie sshd funktionieren. Diese Runlevel
waere dann dazu da, dass nach einem Reboot ein Administrator einloggen und
irgendwelche Pass-Phrases eingeben kann, die fuer den Betrieb bestimmter
Prozesse erforderlich sind.

Ein weiterer sinnvoller Run-Level koennte fuer Backups vorgesehen sein.
Zugegeben: Ich habe mich nicht bemueht, solche Dinge mit init zu
implementieren, was aber immer auch daran lag, dass sich das Problem viel
uebersichtlicher mit einem Shell- oder DCL-Skript (jaja) loesen lies.

Anwendungen, die einen System V init zwingend erforderlich machen, sind
also IMHO die Ausnahme, und die Regel ist, dass man nur solche Features in
ein Betriebssystem aufnehmen sollte, die tatsaechlich von einer sinnvollen
Anzahl von Benutzern auch gebraucht werden.

Bei einer inittab-basierten Loesung ist der Kontrollfluss beim Wechsel
zwischen verschiedenen Runlevels schwer zu ueberblicken, zumal zusaetzlich
ja noch jede Menge von init unabhaengige Prozesse beim Booten aus den
rc-Skripten gestartet werden.

Es gibt sicherlich auch ein oder zwei Features in System V, die ich in BSD
gerne haette. Der System V init gehoert mit Sicherheit nicht dazu.

Viele Gruesse,
-Hans
Received on Thu 28 May 1998 - 23:08:38 CEST

search this site