Inhaltsverzeichnis

SysVinit

Beschreibung

Das starten und stoppen von Diensten wird in einem SysVinit-System per Start-Stop-Dateien durchgeführt. Sollen bestimmte Dienste beim Systemstart automatisch ausgeführt werden, dann werden Sym-Links in die entsprechenden Run-Level-Verzeichnisse gelegt.

Geht die Maschine in den Run-Level 3, dann werden alle Sym-Links ausgeführt, die im Verzeichnis /etc/rc3.d/ liegen und auf entsprechende Start-Stop-Scripte verweisen.

In Ubuntu 10.04 sieht der Sym-Link (Run-Level 3) für den Apache2 so aus:

# ls -l /etc/rc3.d/S20apache2 
lrwxrwxrwx 1 root root 17 2010-05-27 12:42 /etc/rc3.d/S20apache2 -> ../init.d/apache2

Das S steht für Start und die 20 stellt die richtige Position in der Sortierreihenfolge beim Ausführen sicher.

Unter Ubuntu sieht das so aus:

# update-rc.d apache2 defaults
 Adding system startup for /etc/init.d/apache2 ...
   /etc/rc0.d/K20apache2 -> ../init.d/apache2
   /etc/rc1.d/K20apache2 -> ../init.d/apache2
   /etc/rc6.d/K20apache2 -> ../init.d/apache2
   /etc/rc2.d/S20apache2 -> ../init.d/apache2
   /etc/rc3.d/S20apache2 -> ../init.d/apache2
   /etc/rc4.d/S20apache2 -> ../init.d/apache2
   /etc/rc5.d/S20apache2 -> ../init.d/apache2

Zum Beispiel starte und stopt man den Apache so:

# /etc/init.d/apache2 start
# /etc/init.d/apache2 status
# /etc/init.d/apache2 stop

Diese Start-Stop-Scripte benötigen in aller Regel (allerdings nicht zwingend in Ubuntu) einen LSB-konformen Header.

Der sieht ungefähr so aus:

Allgemein:

### BEGIN INIT INFO
# Provides:          <Dienstname>
# Required-Start:    <das muss schon laufen>
# Required-Stop:     <das muss noch laufen>
# Should-Start:      <Software die schon laufen muss>
# Should-Stop:       <Software die noch laufen muss>
# Default-Start:     <Start-Run-Level>
# Default-Stop:      <Stop-Run-Level>
# Short-Description: <Dienstbeschreibung>
### END INIT INFO

konkret für Squid:

### BEGIN INIT INFO
# Provides:          squid
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Squid HTTP Proxy
### END INIT INFO

Run-Level

Handhabung

Run-Level anzeigen:

# runlevel
N 2

Das bedeutet:

  1. vorheriger Run-Level: N (Boot)
  2. aktueller Run-Level: 2

Wechsel in den Run-Level 3:

# init 3

nochmal den Run-Level anzeigen:

# runlevel
2 3

Definierte Run-Level

Jede Linux-Distribution definiert ihre Run-Level etwas anders.

Im Allgemeinen kann man aber von folgender Festlegung ausgehen:

FreeBSD

Kapitel 11. Konfiguration und Tuning - 11.2.1. Dienste über das rc.d-System starten (Ein einfaches Startskript…)