Provided by: manpages-de_2.16-1_all 

BEZEICHNUNG
init, telinit - Initialisierung der Prozesssteuerung
ÜBERSICHT
/sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx ] [ 0123456Ss ]
/sbin/init [ --version ]
/sbin/telinit [ -t SEKUNDEN ] [ 0123456sSQqabcUu ]
/sbin/telinit [ -e VAR[=WERT] ]
BESCHREIBUNG
Init
Init ist der Elternprozess aller Prozesse. Seine Hauptaufgabe besteht darin, Prozesse aus einem Skript in
der Datei /etc/inittab zu erzeugen (siehe auch inittab(5)). Diese Datei hat normalerweise Einträge, die
init dazu veranlassen auf jeder Leitung gettys zu erzeugen, auf der sich ein Benutzer einloggen kann. Er
steuert auch alle unabhängigen Prozesse, die von einem bestimmten System benötigt werden.
RUNLEVEL
Ein Runlevel ist eine Software-Konfiguration des Systems, der es nur einer ausgewählten Gruppe von
Prozessen erlaubt, ausgeführt zu werden. Die Prozesse, die von init für jeden dieser Runlevel erzeugt
werden, sind in der Datei /etc/inittab definiert. Init kann in einem von acht Runleveln sein: 0-6 und S
(auch s). Init wechselt den Runlevel, wenn ein privilegierter Benutzer das Programm /sbin/telinit
startet, das init passende Signale sendet, die ihm mitteilen, in welchen Runlevel es wechseln soll.
Die Runlevel S, 0, 1 und 6 sind reserviert. Der Runlevel S wird benutzt, um das System beim Start zu
initialisieren. Wenn Runlevel S (beim Start) oder Runlevel 1 (umschalten von einem Mehrbenutzer-Runlevel)
gestartet wird, wechselt das System in den »Einzelbenutzermodus«, nach dem der aktuelle Runlevel S ist.
Runlevel 0 wird benutzt, um das System zu stoppen, Runlevel 6 startet das System neu.
Nach dem Starten durch S tritt das System automatisch in die Mehrbenutzer-Runlevel 2 bis 5 ein, falls es
dort kein Problem gibt, das vom Administrator im Einzelbenutzermodus behoben werden muss. Normalerweise
führt der Administrator nach Eintreten in den Einzelbenutzermodus Wartungsarbeiten durch und startet dann
das System neu.
Lesen Sie die Handbuchseiten von shutdown(8) und inittab(5), um weitere Informationen zu erhalten.
Die Runlevel 7-9 sind ebenfalls gültig, wenngleich nicht wirklich dokumentiert. Dies ist deshalb so, weil
»traditionelle« Unix-Varianten sie nicht benutzen.
Die Runlevel S und s sind identisch. Intern sind sie Aliase für den gleichen Runlevel.
SYSTEMSTART
Nachdem init im letzten Schritt des Startprozesses aufgerufen wird, sucht es nach der Datei /etc/inittab
und sieht nach, ob es dort einen initdefault-Eintrag gibt (siehe inittab(5)). Der Eintrag initdefault
bestimmt den Anfangs-Runlevel des Systems. Falls es dort keinen derartigen Eintrag gibt (oder gar keine
inittab-Datei existiert), muss der Runlevel in der Systemkonsole eingegeben werden.
Die Runlevel S oder s initialisieren das System und benötigen keine /etc/inittab-Datei.
Im Einzelbenutzermodus wird /sbin/sulogin auf /dev/console aufgerufen.
Beim Eintritt in den Einzelbenutzermodus initialisiert init die stty-Einstellungen der Konsolen auf
vernünftige Werte. Der »Clocal«-Modus wird gesetzt. Hardware-Geschwindigkeit und Datenflusssteuerung
werden nicht geändert.
Beim ersten Eintritt in den Mehrbenutzermodus führt init die boot- und bootwait-Einträge aus, um das
Einhängen von Dateisystemen zu erlauben, bevor Anwender sich anmelden können. Dann werden alle Einträge,
die zum Runlevel passen, verarbeitet.
Wenn ein neuer Prozess gestartet wird, prüft init zuerst, ob die Datei /etc/initscript existiert. Ist
dies der Fall, benutzt es dieses Skript, um den Prozess zu starten.
Jedesmal, wenn ein Kindprozess endet, zeichnet init diesen Umstand und den Grund der Beendigung in
/var/run/utmp und /var/log/wtmp auf, sofern diese Dateien existieren.
RUNLEVEL ÄNDERN
Nachdem alle vorgesehenen Prozesse erzeugt worden sind, wartet init darauf, dass ein untergeordneter
Prozess endet, ein Stromausfallsignal oder darauf, dass telinit einen Wechsel des Runlevels signalisiert.
Wenn eine der drei oben genannten Bedingungen erfüllt ist, untersucht init nochmals die
/etc/inittab-Datei. Es können jederzeit neue Einträge zu dieser Datei hinzugefügt werden. Jedoch wartet
init immer noch darauf, dass einer der drei oben genannten Bedingungen eintritt. Um eine sofortige
Antwort bereitzustellen, können die Befehle telinit Q oder q init aufwecken, um die Datei /etc/inittab
erneut zu prüfen (neu zu laden).
Falls init sich nicht im Einzelbenutzermodus befindet, und ein Stromausfallsignal (SIGPWR) empfängt,
liest es die Datei /etc/powerstatus. Anschließend wird ein Befehl anhand des Inhalts der Datei gestartet:
F(EHLSCHLAG)
Strom fällt aus, die USV versorgt den Rechner mit Strom. Die powerwait- und powerfail-Einträge
werden ausgeführt.
O(K) Stromkreis wurde wieder geschlossen, die powerokwait-Einträge werden ausgeführt.
L(OW/niedrig)
Strom fällt aus und der Ladestand der USV ist niedrig. Die powerfailnow-Einträge werden
ausgeführt.
Wenn /etc/powerstatus nicht existiert oder etwas anderes enthält als die Buchstaben F, O oder L, wird
Init sich so verhalten, als hätte es den Buchstaben F gelesen.
Die Verwendung von SIGPWR und /etc/powerstatus werden nicht empfohlen. Wenn etwas mit init interagieren
möchte, sollte der Steuerkanal /run/initctl verwendet werden - lesen Sie die Handbuchseite von Initctl,
um weitere Dokumentation darüber zu erhalten.
Falls init die Aufforderung zum Wechsel des Runlevels erhält, sendet es das Warnsignal SIGTERM an alle
nicht im neuen Runlevel definierten Prozesse. Dann wartet es drei Sekunden bevor es diese Prozesse
gewaltsam per Signal SIGKILL beendet. Beachten Sie, dass init davon ausgeht, dass diese Prozesse (und
ihre Unterprozesse) in der gleichen Prozessgruppe verbleiben, die init ursprünglich für sie erstellt
hatte. Wenn Prozesse ihre Gruppenzugehörigkeit andern, werden Sie diese Signale nicht empfangen. Solche
Prozesse müssen separat beendet werden.
TELINIT
/sbin/telinit ist mit /sbin/init verknüpft. Es empfängt Argumente aus einem Buchstaben oder init-Signale,
um die zugehörige Aktion durchzuführen. Die folgenden Argumente dienen als Anweisungen für telinit:
0,1,2,3,4,5 oder 6
init mitteilen, in den angegebenen Runlevel zu schalten.
a,b,c init mitteilen, nur die Einträge in der Datei /etc/inittab zu verarbeiten, die den Runlevel a, b
oder c haben.
Q oder q
init mitteilen, die Datei /etc/inittab erneut zu prüfen.
S oder s
init mitteilen, in den Einzelbenutzermodus zu wechseln.
U oder u
init mitteilen, sich selbst erneut (unter Beibehalten des Status) auszuführen. Es kommt zu keiner
erneuten Ausführung der Datei /etc/inittab. Der Runlevel sollte einer aus Ss0123456 sein,
anderenfalls wird die Anfrage stillschweigend ignoriert.
telinit kann dem init-Prozess mitteilen, wieviel Zeit dieser zwischen dem Senden der Signale SIGTERM und
SIGKILL warten soll. Die Vorgabe ist drei Sekunden, dies kann aber durch die Option -t geändert werden.
telinit -e weist init an die Umgebung für Prozesse zu ändern, die es erzeugt. Das Argument von -e ist
entweder in der Form VAR=WERT, was die Variable VAR auf den Wert WERT setzt oder in der FormVAR (ohne
Gleichheitszeichen), was die Variable VAR leert.
init kann nur von Benutzern mit geeigneten Rechten aufgerufen werden.
Das Programm init prüft durch Auswerten der Prozesskennung, ob es init oder telinit ist. Der echte
Prozess von init ist immer 1. Daraus folgt, dass jemand anstelle des Aufrufs telinit auch nur init als
Abkürzung benutzen kann.
UMGEBUNGSVARIABLEN
Init setzt folgende Umgebungsvariablen für alle seine Kindprozesse:
PATH /bin:/usr/bin:/sbin:/usr/sbin
INIT_VERSION
Wie der Name schon sagt. Nützlich, um festzulegen, ob ein Skript direkt von init gestartet werden
soll.
RUNLEVEL
Der aktuelle Runlevel des Systems.
PREVLEVEL
Der vorherige Runlevel (nützlich nach einer Änderung des Runlevels).
CONSOLE
Die Systemkonsole. Diese wird tatsächlich vom Kernel vererbt; wenn sie jedoch nicht gesetzt ist,
wird init sie als Vorgabe auf /dev/console setzen.
BOOTSCHALTER
Es ist möglich, init eine Reihe von Bootschaltern vom Bootmonitor aus (z.B. LILO oder GRUB) zu übergeben.
Init akzeptiert folgende Schalter:
-s, S, single
Bootet im Einzelbenutzermodus. In diesem Modus wird zuerst die Datei /etc/inittab untersucht und die
»rc«-Startskripte werden ausgeführt, bevor die Einzelbenutzer-Shell gestartet wird.
1-5 Runlevel in den gestartet wird.
-b, emergency
Startet direkt in eine Einzelbenutzer-Shell, ohne irgendwelche anderen Startskripte auszuführen.
-a, auto
Der LILO-Bootloader fügt das Wort »auto« zur Befehlszeile hinzu, wenn der Kernel mit der
Standard-Befehlszeile (ohne Eingriff des Anwenders) gestartet wird. Falls dies gefunden wird, setzt
init die Umgebungsvariable »AUTOBOOT« auf »yes«. Beachten Sie, dass Sie die nicht für irgendwelche
Sicherheitsmaßnahmen verwenden können - selbstverständlich kann der Anwender »auto« oder »-a«
manuell auf der Befehlszeile angeben.
-z xxx
Das Argument zu -z wird ignoriert. Sie können es benutzen, um die Befehlszeile etwas zu verlängern,
damit sie etwas mehr Platz auf dem Stack reserviert. Init kann dann die Befehlszeile derart
verändern, dass ps(1) den aktuellen Runlevel anzeigt.
--version
Wenn dieses Argument alleine verwandt wird, zeigt es die aktuelle Version von Init auf der
Konsole/Stdout an. Dies ist eine schnelle Methode, herauszufinden, welche Init-Software und Version
verwandt wird. Nachdem die Versionsinformation angezeigt wurde, beendet sich Init sofort mit einem
Rückgabewert von Null.
SCHNITTSTELLE
Init lauscht auf einem fifo in /dev, /run/initctl, auf Nachrichten. Telinit benutzt diesen, um mit Init
zu kommunizieren. Die Schnittstelle ist noch nicht sehr ausführlich dokumentiert oder fertiggestellt. Wer
interessiert ist, sollte die Datei initreq.h im Unterverzeichnis des init-Quellcode-Tar-Archives
studieren.
SIGNALE
Init reagiert auf mehrere Signale:
SIGHUP
Hat die gleichen Auswirkungen wie telinit q.
SIGUSR1
Beim Empfang dieses Signals schließt init seinen Steuerungs-Fifo /run/initctl und öffnet ihn wieder.
Nützlich für Systemstartskripte, wenn /dev neu eingehängt wird.
SIGUSR2
Wenn Init SIGUSR2 empfängt, schließt Init sich und läßt das Steuer-FIFO /run/initctl geschlossen.
Dies kann dazu verwandt werden, sicherzustellen, dass Init keine Dateien offen hält. Allerdings
hindert es Init auch daran, die Runlevel zu ändern. Das bedeutet, dass Befehle wie »shutdown« nicht
mehr funktionieren. Der FIFO kann durch Senden des Signals SIGUSR1 an Init wieder geöffnet werden.
SIGINT
Normalerweise sendet der Kernel dieses Signal an init, wenn CTRL-ALT-DEL gedrückt wurde. Es
aktiviert die Aktion ctrlaltdel.
SIGWINCH
Der Kernel sendet dieses Signal, falls die KeyboardSignal-Taste gedrückt wurde. Es aktiviert die
kbdrequest-Aktion.
KONFORM ZU
Init ist kompatibel zu System-V-Init. Es arbeitet eng mit den Skripten in den Verzeichnissen /etc/init.d
und /etc/rc{runlevel}.d zusammen.Falls Ihr System diesem Grundsatz folgt, sollte sich in diesem
Verzeichnis eine README-Datei befinden, die erklärt wie diese Skripte funktionieren.
DATEIEN
/etc/inittab
/etc/initscript
/dev/console
/var/run/utmp
/var/log/wtmp
/run/initctl
WARNUNGEN
Init geht davon aus, dass alle Prozesse und Kindprozesse in der selben Prozessgruppe verbleiben, die
ursprünglich für sie eingerichtet wurde. Falls einer dieser Prozesse die Gruppe wechselt, kann init ihn
nicht mehr beenden und es kann passieren, dass Sie in einem Zustand landen, in dem zwei Prozesse von
einer Terminalzeile Befehle einlesen wollen.
Auf einem Debian-System veranlasst das Eintreten in Runlevel 1, dass alle Prozesse mit Ausnahme von
Kernel-Threads und dem Skript, das das Beenden erledigt und andere Prozesse in deren Sitzung, beendet
werden. Als Konsequenz davon ist es nicht sicher, von von Runlevel 1 zu einem Mehrbenutzer-Runlevel
zurückzukehren: Daemons, die in Runlevel S gestartet wurden und für normale Operationen benötigt werden,
laufen nicht länger. Das System sollte neu gestartet werden.
DIAGNOSE
Wenn init herausfindet, dass es kontinuierlich einen Eintrag öfter als zehn mal in zwei Minuten neu
erzeugt, wird es annehmen, dass ein Fehler in der Befehlszeile vorliegt, eine Fehlermeldung auf der
Befehlszeile erzeugen und sich weigern, den Eintrag auszuführen, bis fünf Minuten vergangen sind oder es
ein Signal empfängt. Dieses verhindert, dass Systemressourcen verschwendet werden, wenn jemandem ein
Tippfehler in /etc/inittab unterläuft oder das zum Eintrag gehörende Programm gelöscht wird.
AUTOR
Miquel van Smoorenburg (miquels@cistron.nl), ursprüngliche Handbuchseite von Michael Haardt
(u31b3hs@pool.informatik.rwth-aachen.de).
SIEHE AUCH
getty(1), login(1), sh(1), runlevel(8), shutdown(8), kill(1), initctl(5), inittab(5), initscript(5),
utmp(5)
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Okrslar <okrslar@informatik.uni-
muenchen.de>, Martin Schulze <joey@infodrom.org>, Chris Leick <c.leick@vollbio.de> und Helge Kreutzmann
<debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an
<debian-l10n-german@lists.debian.org>.
29. Juli 2004 INIT(8)