Reference - Runlevel

Sprachenübersicht/Betriebssysteme/UNIX/System

Runlevel

Diese Seite wurde 4541 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: runlevel rc.d init.d sysv

Abbildung

Inhaltsverzeichnis



Vorwort Top


Beim Ein- und Abschalten jedes Linux- und Unix-Systems werden unzählige Dienste gestartet, gestoppt, Scripte ausgeführt und Einstellungen im System getätigt. Nach welchen Regeln dies geschieht, soll dieses Tutorial nun erklären.

Hinweis:
Nicht jedes System verwendet das SysV-Runlevel-Prinzip um diese Aufgaben auszuführen. Derzeit wird vorallem an einem neuen System gearbeitet, bei welchem auch mehrere Scripte parallel ausgeführt werden können, welches die Performance verbessern soll.
Weiters gibt es auch Systeme, welche auf eine einzelne 'Autostart-Datei' setzen. Doch diese beiden exoten sollen hier nicht weiter behandelt werden.

Die Runlevels Top


Bei den Runlevels handelt es sich um mehrere Betriebszustände des Systems.

  • S .. Start, wird beim Hochfahren gesetzt


  • 0 .. Halt, wird beim Abschalten verwendet


  • 1 .. Single User, für spezielle Betriebsfälle


  • 2-5 .. Multiuser, meist frei wählbar, abhängig von der Distribution


  • 6 .. Reboot, wird beim Neustart ausgeführt



In der Datei /etc/inittab kann der Standard-Runlevel mit dem Eintrag id:2:initdefault: (hier: Runlevel 2) gesetzt werden. Dieser wird dann nach dem Booten aktiviert.

Die Runlevel werden nicht durch Useranmeldung oder Userwechsel beeinflusst. Meist wird der ursprüngliche Runlevel auch nicht verändert, da dies nur in sehr seltenen Fällen notwendig ist.

Konfiguration Top


Welche Scripte zu welchem Zeitpunkt ausgeführt werden, hängt von den Verknüpfungen ab. Üblicherweise befinden sich in /etc/init.d oder /etc/rc.d alle benötigten Bash-Scripte, welche mindestens über die Parameter Start und Stop verfügen, um auch gestoppt werden zu können. Es ist zwar möglich, dass diese nur den Aufruf des Dienstes oder einen Befehl enthalten, jedoch in manchen Fällen unsauber (z.b. bei Diensten).

Beispiel-Script:


#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
    start)
        echo -n "Starting mail transfer agent: postfix"
        /usr/local/sbin/postfix start > /dev/null
        echo "."
    ;;

    stop)
        echo -n "Stopping mail transfer agent: postfix"
        /usr/local/sbin/postfix stop > /dev/null
        echo "."
    ;;

    reload)
        echo -n "Reloading config"
        /usr/local/sbin/postfix reload > /dev/null
        echo "."
    ;;
    restart)
        echo -n "Stopping mail transfer agent: postfix"
        /usr/local/sbin/postfix stop > /dev/null
        echo "."
        echo -n "Starting mail transfer agent: postfix"
        /usr/local/sbin/postfix start > /dev/null
        echo "."
    ;;

    *)
        echo "Usage: /etc/init.d/postfix {start|stop|reload|restart}" >&2
        exit 1
    ;;
esac

exit 0



unsauberes Beispiel-Script ohne Parameter:


#!/bin/bash

echo -n "Starting mail scanner: amavis"
/usr/local/sbin/amavisd
echo "."



Beim Erstellen der Scripte sollte beachtet werden, dass sie mit root-Rechten ausgeführt werden.

Sind die Scripte erstellt und haben sie die benötigte Berechtigung, um ausgeführt werden zu können (chmod a+x /etc/init.d/script), müssen sie noch mit den entsprechenden Runlevels verknüpft werden. Dies geschieht durch den aufruf von ln. Man sollte hierbei die Option -s (Softlink) verwenden.

Beispiel:


ln -s /etc/init.d/script /etc/rc2.d/S20script



Die Verknüpfungen werden einfach in die Ordner der gewünschten Runlevels erstellt. Dabei muss folgendes Format eingehalten werden:

  • als erster Buchstabe S oder K


  • danach eine zweistellige Zahl zwischen 00 und 99


  • beliebiger Name



S .. Start, wird beim Eintreten in den Runlevel ausgeführt
K .. Kill, wird beim Verlassen des Runlevels ausgeführt
xx .. die zweistellige Zahl gibt die Reihenfolge an, in welcher die Scripte ausgeführt werden

Typische Abläufe Top


Zu den typischen Abläufen zählt vorallem das Starten und Stoppen des Systems. Nachdem der Kernel geladen wurde, fällt das System in Runlevel S und führt dabei alle zugehörigen Scripte aus. Es beginnt dabei bei der Verknüpfung mit der niedrigsten Nummer und dem Prefix S.
Ist Runlevel S erfolgreich erreicht, wechselt das System in den default-Runlevel (typisch: 2). Nun werden wieder alle Scripte mit Prefix S in rc2.d (z.b. /etc/rc2.d) der Reihe nach ausgeführt, danach ist das System betriebsbereit.

Möchte der User den Computer nun Abschalten, tippt er den Befehl halt oder shutdown in die Konsole und das System wechselt in Runlevel 0. Dazu muss es zunächst alle Scripte in rc2.d mit dem Prefix K hintereinander ausführen, und dann bei Eintritt in Runlevel 0 alle Scripte in rc0.d mit Prefix S wobei das letzte (z.b. S90halt) die Stromversorgung deaktivert.

Tools zur Konfiguration Top


Die Runlevels können auch komfortabel über die Tools rcconf

Abbildung

bzw. sysv-rc-conf

Abbildung

eingestellt werden. Jedoch fehlt hierbei oft die Möglichkeit, die Reihenfolge festzulegen. Diese Aufgabe muss deshalb händisch erledigt werden.

Ein sehr angenehmes Tool befindet sich auch im Yast-Paket von Suse und könnte sich nun durch offenlegung des Codes langsam verbreiten.

Schlusswort Top


Allgemein gilt, dass es besser ist, weniger Dienste zu starten, da die Sicherheit dadurch einfach verbessert werden kann. Weniger Dienste bedeutet weniger offene Ports und weniger mögliche Fehlerquellen.

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, der Artikel kann wiederhergestellt werden.

Sprachenübersicht/Betriebssysteme/UNIX/System/Runlevel