Das Unix-Prozess-System

> Betriebssystem Linux

> > # Die Datei /etc/inittab

> > Um jetzt einmal genauer darzustellen, wie die Einstellungen in der Datei /etc/inittab vorzunehmen sind, wird im Folgenden eine beispielhafte solche Datei dargestellt und beschrieben.

> > Jede Zeile innerhalb dieser Datei, die mit einem Doppelkreuz (#) beginnt, wird als Kommentar gewertet und nicht ausgeführt. Alle anderen Zeilen haben immer den gleichen Aufbau:

> > Symbolischer Name: Liste der Runlevels: Art der Aktion: Befehl

> > Jede Zeile enthält also verschiedene, durch Doppelpunkt (:) getrennte Felder. Die Bedeutung der einzelnen Felder ist im Folgenden genauer dargestellt:

> > Symbolischer Name
> >   Ein Name für die Zeile, der meist aus zwei Zeichen besteht. Wird benutzt, um bei Fehlern genau den jeweiligen Prozeß angeben zu können, bei dem der Fehler aufgetreten ist. Diese Namen sind beliebig wählbar, müssen aber eindeutig sein.
> > Liste der Runlevels
> >   Eine einfache Liste der Runlevels, in denen diese Zeile ausgeführt werden soll. Die Runlevels sind ohne Leerzeichen direkt hintereinander zu schreiben. Der Eintrag 234 bedeutet also, dass diese Zeile im Runlevel 2, 3 und 4 gültig ist.
> > Art der Aktion
> >   Dieser Eintrag beschreibt, auf welche Art der folgende Befehl gestartet werden soll. Gültige Werte sind:

> >   respawn
> >     Der Prozess wird jedesmal neu gestartet, sobald er beendet ist. (Typisches Beispiel ist Getty)
> >   wait
> >     Der Prozess wird einmal gestartet, wenn in den spezifizierten Runlevel gewechselt wird. Init wartet auf seine Abarbeitung und setzt erst dann seine Arbeit fort.
> >   once
> >     Der Prozess wird genau einmal gestartet, wenn in den spezifizierten Runlevel gewechselt wird. Init wartet nicht auf das Ende dieses Prozesses. Damit können direkt Daemon-Prozesse gestartet werden.
> >   boot
> >     Der Befehl wird beim Booten des Systems abgearbeitet. Das Feld mit den Runleveln wird ignoriert.
> >   bootwait
> >     Wie boot, jedoch wartet init auf die Abarbeitung des Befehls, bevor die Arbeit fortgesetzt wird.
> >   initdefault
> >     Spezieller Wert, der nur einmal in der Datei auftauchen darf. Er legt den Runlevel fest, der als voreingestellter gestartet wird. Das Runlevel-Feld darf nur einen Runlevel enthalten. Fehlt dieser Eintrag, so fragt der Init-Prozess beim Start, welcher Runlevel aktiviert werden soll.
> >   powerwait
> >     Der genannte Befehl wird ausgeführt, wenn die Spannungsversorgung abfällt. Init wird darüber von einem Prozeß informiert, der mit der USV verbunden ist. Init wartet, bis der Prozess abgearbeitet ist.
> >   powerfail
> >     Wie Powerwait, nur wartet init nicht auf die Abarbeitung, sondern fährt gleich fort.
> >   powerokwait
> >     Der Prozess, der abgearbeitet wird, sobald init darüber informiert ist, dass die Spannung wieder da ist.
> >   powerfailnow
> >     Dieser Prozess wird abgearbeitet, wenn init gemeldet bekommt, dass die Batterie der USV so gut wie leer ist und die Spannung trotzdem noch nicht wieder da ist. (Funktioniert natürlich nur, wenn die USV das mitteilen kann.)
> >   ctrlaltdel
> >     Legt fest, was passieren soll, wenn Strg-Alt-Entf gedrückt wurde.

> > Befehl
> >   Der Befehl (bzw. das Shellscript), der abgearbeitet werden soll.
> > Mit diesem Wissen können wir uns jetzt einmal eine beispielhafte /etc/inittab anschauen. Ich habe hier einfach die der SuSE 6.1 Version von Linux genommen und mit deutschen Kommentaren versehen:

> >     #
> >     # /etc/inittab
> >     #
> >     # Voreingestellter Runlevel ist 3
> >     id:3:initdefault:

> >     # Systemcheck beim Starten
> >     # Für einen speziellen Notfall-Runlevel (I) wird das Programm
> >     # /sbin/init.d/boot gestartet und init wartet auf seine Abarbeitung
> >     # (bootwait)
> >     si:I:bootwait:/sbin/init.d/boot

> >     # Die grundlegenden Scripts, die im jeweiligen Runlevel gestartet werden
> >     # sollen. Das heißt in diesem Fall, dass jeweils das Programm /sbin/init.d/rc
> >     # gestartet wird. Als Parameter bekommt es den aktuellen Runlevel mit.
> >     # Das ist sehr SuSE spezifisch. In anderen Systemen werden einfach
> >     # verschiedene Scripts gestartet.
> >     l0:0:wait:/sbin/init.d/rc 0
> >     l1:1:wait:/sbin/init.d/rc 1
> >     l2:2:wait:/sbin/init.d/rc 2
> >     l3:3:wait:/sbin/init.d/rc 3
> >     #l4:4:wait:/sbin/init.d/rc 4
> >     #l5:5:wait:/sbin/init.d/rc 5
> >     l6:6:wait:/sbin/init.d/rc 6

> >     # Was soll im Single-User-Modus passieren
> >     # Zunächst wird wieder das Programm /sbin/init.d/rc mit dem Parameter S
> >     # gestartet und auf seine Abarbeitung gewartet.
> >     ls:S:wait:/sbin/init.d/rc S

> >     # Dann wird das Programm /sbin/sulogin aufgerufen und jedesmal wieder
> >     # gestartet, sobald es beendet ist. (respawn)
> >     ~~:S:respawn:/sbin/sulogin

> >     # Was passiert wenn Strg-Alt-Entf gedrückt wird
> >     ca::ctrlaltdel:/sbin/shutdown -r -t 4 now

> >     # Die Einstellungen für die Zusammenarbeit mit USVs
> >     pf::powerwait:/sbin/init.d/powerfail    start
> >     pn::powerfailnow:/sbin/init.d/powerfail now
> >     pn::powerfail:/sbin/init.d/powerfail now
> >     po::powerokwait:/sbin/init.d/powerfail  stop

> >     # für ARGO USV
> >     sh:12345:powerfail:/sbin/shutdown -h now THE POWER IS FAILING

> >     # Die Getty-Programme für die normalen Runlevel
> >     1:123:respawn:/sbin/mingetty --noclear tty1
> >     2:123:respawn:/sbin/mingetty tty2
> >     3:123:respawn:/sbin/mingetty tty3
> >     4:123:respawn:/sbin/mingetty tty4
> >     5:123:respawn:/sbin/mingetty tty5
> >     6:123:respawn:/sbin/mingetty tty6
> >     #
> >     #  Note: Do not use tty7 in runlevel 3, this virtual line
> >     #  is occupied by the programm xdm.
> >     #
> >     # modem getty. Im Runlevel 2 und 3 wird auf die Modemleitung ein Getty
> >     # gelegt.
> >     # mo:23:respawn:/usr/sbin/mgetty -s 38400 modem

> >     # end of /etc/inittab

> > [ Kurs Hauptseite ] [ Linux-Kurse ] [ Startseite Linux-Praxis ]

> > © 1999, 2000, 2001 by F. Kalhammer