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:
- vorheriger Run-Level: N (Boot)
- 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:
- Run-Level 0: "Stop"
- Run-Level 1: "Single-User-Mode" (ohne Netzwerk)
- Run-Level 2: "Server-Mode" (mit Netzwerk, ohne GUI)
- Run-Level 3: "Desktop-Mode" (mit Netzwerk, mit GUI)
- Run-Level 6: "Reboot"
FreeBSD
Kapitel 11. Konfiguration und Tuning - 11.2.1. Dienste über das rc.d-System starten (Ein einfaches Startskript…)
