Provided by: manpages-de_0.5-4.1ubuntu1_all bug

BEZEICHNUNG

       init,  telinit  -   Initialisierung  der  Kontrolle  über  Prozesse und
       Runlevel

SYNTAX

       /sbin/init [-t sec] [0123456SsQq]

       /sbin/telinit [-t sec] [0123456SsQq]

BESCHREIBUNG

   init
       Init ist der Vater aller Prozesse.  Seine Hauptaufgabe  besteht  darin,
       Prozesse nach einem Skript in der Datei /etc/inittab zu erzeugen (siehe
       auch inittab(5)).  Diese Datei hat  normalerweise  bestimmte  Einträge,
       die init dazu veranlassen auf jeder Leitung gettys zu erzeugen, auf der
       sich ein Benutzer einloggen kann.  Er kontrolliert auch alle  autonomen
       Prozesse, die von einem bestimmten System benötigt werden.

RUNLEVEL

       Ein  Runlevel  ist  ein  Softwarezustand  des Systems, der es nur einer
       bestimmten 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 sich in einem von  acht
       Runlevel  befinden, 0-6 und S oder s.  Init wechselt den Runlevel, wenn
       ein priviligierter Benutzer das  Programm  /sbin/telinit  startet,  das
       init  bestimmte  Signale  sendet,  die ihm sagen, in welchen Runleveles
       wechseln soll.

       Die Runlevel 0, 1 und 6 sind reserviert.   Der  Runlevel  0  wird  dazu
       verwendet, das System anzuhalten, der Runlevel 6 iwr dafür benutzt, das
       System neuzusatarten, und der Runlevel  1  wird  dafür  verwendet,  das
       System  in den Single-User-Modus herunterzufahren.  Der Runlevel S wird
       normalerweise  nicht  direkt  angesprungen,  sondern  dient   nur   als
       Zwischenstufe  für  die  Skripte,  die  ausgeführt  werden, wenn in den
       Runlevel 1 übergegangen wird.  Weitere Informationen darüber finden Sie
       in den Handbuchseiten zu shutdown(8) und inittab(5).

       Die   Runlevel   7-9  sind  ebenfalls  gültig,  jedoch  nicht  wirklich
       dokumentiert.    Das   liegt   daran,   dass   die     "traditionellen"
       UNIX-Varianten  diese  nicht  benutzen.   Manche werden sich vielleicht
       auch  wundern,  dass  es  zwischen  den  Runlevel  S   und   s   keinen
       ersichtlichen   Unterschied  gibt.   Tatsächlich  sind  beide  Optionen
       lediglich ein Alias für ein und den selben Runlevel.

SYSTEMSTART

       Wenn init im letzten Schritt des Bootprozesses aufgerufen  wird,  sucht
       er  nach  der  Datei  /etc/inittab  und  sieht  nach,  ob es dort einen
       initdefault-Eintrag gibt (siehe inittab(5)).  initdefault bestimmt  den
       Anfangs-runlevel des Systems.  Falls es dort keine derartige Eintragung
       gibt,  oder  gar  keine  inittab-Datei  existiert,  so  muss   an   der
       Systemkonsole der runlevel eingegeben werden.

       Die  runlevel S oder s bringen das System in den Single-user Modus, und
       benötigen keine  /etc/inittab-Datei.   Im  Single-user-Modus  wird  auf
       /dev/console /sbin/sulogin aufgerufen.

       Wenn  das  System  in  den  Single-user  Modus übergeht, liest init die
       ioctl(2)-Zustände der  Konsole  in  /etc/ioctl.save.   Existiert  diese
       Datei  nicht, dann initialisiert init die Leitung mit 9600 BAUD und mit
       CLOCAL-Einstellungen.   Wenn  init  den   Single-User-Modus   verlässt,
       schreibt  es  die  ioctl-Einstellungen  in   diese Datei, so dass diese
       Einträge bei der nächsten  Single-User-Sitzung  wiederverwendet  werden
       können.

       Wenn  init  das  erste mal in einen Multi-User-Modus eintritt, führt er
       die boot- und bootwait-Einträge der  Datei  /etc/inittab  aus,  die  es
       erlauben, dass die Dateisysteme gemountet werden können, bevor sich ein
       Benutzer einloggen kann.  Danach werden alle die runlevel  betreffenden
       Einträge ausgeführt.

       Immer  wenn  init einen neuen Prozess startet, schaut das Programm erst
       nach, ob die  Datei  /etc/initscript  existiert.   Wenn  es  sie  gibt,
       benutzt init das Skript dieser Datei um den Prozess zu starten.

       Jedesmal, wenn ein Kindprozess terminiert, hält init diese Tatsache und
       den Grund, weshalb  der  Kindprozess  gestorben  ist,  in  den  Dateien
       /var/run/utmp und /var/log/wtmp fest, falls diese Dateien existieren.

RUNLEVEL-ÄNDERUNGEN

       Sobald  alle  vorgesehenen  Prozesse  erzeugt  worden sind, wartet init
       darauf, dass ein Kindprozess stirbt, auf  ein  Stromausfallsignal  oder
       auf  eine  Anweisung von /sbin/telinit, in welchen runlevel er wechseln
       soll.  Wenn eine der  drei  oben  genannten  Bedingungen  erfüllt  ist,
       untersucht  init  nochmals  die  /etc/inittab-Datei,  da  dieser  Datei
       jederzeit neue  Einträge  hinzugefügt  werden  können.   Man  kann  den
       schlafenden init-Prozess auch mit den Kommandos Q oder q aufwecken, was
       ihn dazu veranlaßt, nochmals die /etc/inittab-Datei zu examinieren.

       Wenn  init  sich  nicht  im  Single-User  Modus   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(AIL) Strom  fällt  aus,  die USV versorgt den Rechner mit Strom.  Die
              powerwait- und powerfail-Einträge werden ausgeführt.

       O(K)   Strom     wurde     wiederhergestellt,     es     werden     die
              powerokwait-Einträge ausgeführt.

       L(OW)  Strom  wird  knapp  und  die  USV geht auf dem Zahnfleisch.  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 Kontrollkanal
       /dev/initctl verwendet werden - siehe Quellcode des sysvinit-Pakets für
       mehr Dokumentation darüber.

       Wenn init angewiesen wird den runlevel zu wechseln, wird das Warnsignal
       SIGTERM an alle Prozesse geschickt, die nicht in der Datei /etc/inittab
       für  den   neuen runlevel vorgesehen sind.  Init wartet dann 5 Sekunden
       bevor  er  diese  Prozesse  mit  dem  kill-Signal   SIGKILL   gewaltsam
       terminiert.   Achtung:  init  nimmt  an,  dass alle diese Prozesse (und
       deren Nachfahren) in derselben Prozessgruppe verblieben sind, die  init
       ursprünglich  für sie erzeugt hat (siehe setpgrp(2)).  Wenn irgendeiner
       dieser Prozesse seine Prozessgruppenzugehörigkeit geändert hat, wird er
       diese   Signale   nicht   erhalten!   Solche  Prozesse  müssen  einzeln
       terminiert werden!

TELINIT

       Das Programm /sbin/telinit ist auf /sbin/init  gelinkt.   Er  wird  mit
       Argumenten, die aus nur einem Buchstaben bestehen gesteuert, und sendet
       init Anweisungen (Signale), welche  Aktionen  dieses  auszuführen  hat.
       Die folgenden Argumente dienen als Anweisungen für telinit:

       0,1,2,3,4,5 oder 6
              befehlen init in den angegebenen Runlevel zu wechseln.

       a,b,c  befehlen  /sbin/init  nur  die  Einträge  der Datei /etc/inittab
              auszuführen, die den Runlevel a, b oder c haben.

       Q oder q
              befehlen  /sbin/telinit  nocheinmal   die   Datei   /etc/inittab
              einzulesen.

       S oder s
              befehlen /sbin/telinit in den Single-User-Modus zu schalten.

       /sbin/telinit kann den init-Prozess auch anweisen, wie viel Zeit dieser
       zwischen dem Senden des TERM und des  KILL  Signals  warten  soll;  die
       Standardeinstellung ist 5 Sekunden, kann jedoch durch die Option -t sec
       verändert werden.

       /sbin/telinit  kann  nur  von  Benutzern   mit   einer   entsprechenden
       Berechtigung aufgerufen werden.

       Das  init-Programm  überprüft,  ob  es  als init oder telinit gestartet
       wurde, indem es auf seine Prozess-ID schaut; die reelle Prozess-ID  von
       init  ist  immer  1.  Von daher darf man einfach auch init anstelle von
       telinit verwenden oder eines Aliases.

UMGEBUNG

       Init setzt folgende Umgebungsvariablen für alle seine Kindprozesse:

       PATH   Wird                      standardmäßig                      auf
              /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin gesetzt.

       INIT_VERSION
              Wie  der  Name schon sagt.  Nützlich, wenn ein Skript direkt von
              init ausgeführt werden soll.

       RUNLEVEL
              Der augenblickliche Runlevel des Systems.

       PREVLEVEL
              Der  vorherige  Runlevel  (nützlich  nach  einer  Änderung   des
              Runlevels).

       CONSOLE
              Die  System-KOnsole.  Diese wird tatsächlich vom Kernel vererbt;
              wenn  sie  jedoch  nicht  gesetzt  ist,  wird   init   sie   auf
              /dev/console setzen als Voreinstellung.

BOOTSIGNALE

       Es  ist  möglich  init  eine  Reihe  von  Bootsignalen  (bootflags) vom
       Bootmonitor aus (d.h. vom LILO  aus)  zu  übergeben.   Init  akzeptiert
       folgende Signale:

       -s, S, single
              Bootet  im  Single-user  Modus.  In diesem Modus wird zuerst die
              Datei /etc/inittab eingelesen; danach  werden,  noch  bevor  die
              Single-User-Shell  gestartet  wird,  die  Bootskripte  der Datei
              /sbin/init.d/boot ausgeführt.

       1,2,3,4 oder 5
              Weist init an, in welchen Runlevel gebootet werden soll.

       -b, emergency
              Gibt init die  Anweisung  direkt  in  den  Single-User-Modus  zu
              booten, ohne irgendwelche Startup-Skripte auszuführen.

       -a, auto
              Der  LILO-Bootloader  fügt  das Wort an den Kernel.  init ist in
              der Lage, es zu lesen.

       -z xxx Das Argument zu -z wird ignoriert.  Sie können es  benutzen,  um
              die  Kommandozeile  etwas  zu  verlängern,  damit sie etwas mehr
              Platz auf dem Stack  reserviert.   Init  kann  anschließend  die
              Kommandozeile  derart  modifizieren,  dass  ps(1)  den aktuellen
              Runlevel anzeigt.

SCHNITTSTELLE

       Init lauscht auf einem Fifo in  /dev,  /dev/initctl,  auf  Nachrichten.
       Telinit benutzt diesen, um mit init zu kommunizieren. Die Schnittstelle
       ist noch nicht sehr ausführlich dokumentiert.   Wer  interessiert  ist,
       möge die Datei initreq.h im Quellcode von init studieren.

SIGNALE

       Init reagiert auf verschiedene Signale:

       SIGHUP
            Init  sucht  nach  /etc/initrunlvl  und /var/log/initrunlvl.  Wenn
            eine dieser Dateien existiert und  einen  ASCII-Runlevel  enthält,
            wechselt  init  in  den  neuen Runlevel.  Dieses existiert nur fr
            Abwrtskompatibilitt!  In normalen Fällen (wenn die Dateien nicht
            existieren)  verhält  sich  init,  als  wenn  telinit q ausgeführt
            wurde.

       SIGUSR1
            Beim  Emfang  dieses  Signals  schließt  init  sein  Kontroll-Fifo
            /dev/initctl  und  öffnet  ihn wieder.  Das ist sinnvoll für Boot-
            Skripte, wenn /dev neu gemountet wird.

       SIGINT
            Normalerweise sendet der Kernel dieses Signal an init, wenn  CTRL-
            ALT-DEL gedrückt wurde.  Es aktiviert die ctrlaltdel-Aktion.

       SIGWINCH
            Der  Kernel  sendet  dieses  Signal, wenn die KeyboardSignal-Taste
            gedrückt wurde.  Es aktiviert die kbdrequest-Aktion.

KONFORM ZU

       Init ist kompatibel zum  System  V  init.   Er  arbeitet  eng  mit  den
       Skripten   zusammen,   die   in  den  Verzeichnissen  /sbin/init.d  und
       /sbin/init.d/rc{runlevel 1-6}.d untergebracht sind.   Wenn  das  System
       dieser  Konvention folgt, sollte sich in diesem Verzeichnis eine README
       -Datei befinden, die erklärt wie diese Skripte funktionieren.

DATEIEN

       /etc/inittab
       /etc/initscript
       /dev/console
       /etc/ioctl.save
       /var/run/utmp
       /var/log/wtmp
       /dev/initctl

WARNUNGEN

       Init geht davon aus, dass alle Prozesse und Kindprozesse in der  selben
       Prozessgruppe  verbleiben, die ursprünglich für sie eingerichtet worden
       ist.  Wenn einer dieser Prozesse in eine andere Gruppe  wechselt,  kann
       init  ihn  nicht mehr beenden, und es kann passieren, dass man in einem
       Zustand landet, in dem zwei Prozesse von einer Terminalleitung  Befehle
       einlesen wollen.

DIAGNOSE

       Wenn  init herausfindet, dass es kontinuierlich einen Eintrag öfter als
       10 mal in 2 Minuten neu erzeugt, wird es annehmen, dass ein  Fehler  in
       der  Befehlszeile  vorliegt,  einen  Fehler erzeugen, Meldungen auf die
       Systemkonsole erstatten und sich weigern, den Eintrag auszuführen,  bis
       5   Minuten  vergangen  sind  oder  es  ein  Signal  empfängt.   Dieses
       verhindert, dass  Systemressourcen  verschwendet  werden,  wenn  jemand
       einen Tippfehler in /etc/inittab einbaut oder das zum Eintrag gehörende
       Programm löscht.

AUTOR

       Miquel van Smoorenburg <miquels@cistron.nl>, ursprüngliche Manpage  von
       Michael  Haardt  <u31b3hs@pool.informatik.rwth-aachen.de>,  Übersetzung
       Martin Okrslar <okrslar@informatik.uni-muenchen.de>  und  Überarbeitung
       von Martin Schulze <joey@infodrom.north.de>.

SIEHE AUCH

       getty(1),  login(1),  sh(1),  who(1), shutdown(1), kill(2), inittab(5),
       inscript(5), utmp(5).

                               11. February 2000                       INIT(8)