Suche


drucken PDF

Start der Dienste


Wie läuft der Start der Dienste beim Bootvorgang ab?

Einleitung


Wenn Ihr dedizierter Server startet, durchläuft er mehrere Initialisierungsphasen, genannt Runlevels.
Während dieser Phasen werden die verschiedenen Dienste des Servers automatisch gestartet. Dies sind dann grundlegende Dienste wie die Konfiguration des Netzwerks, aber auch Anwendungen wie Apache, Mailserver oder MySQL-Server.


Prinzipiell


Es existieren 5 wichtige Runlevel:
- Runlevel 0 : Aufruf beim Anhalten des Systems
- Runlevel 1 : Aufruf beim Systemstart im Einbenutzerbetrieb
- Runlevel 3 : Aufruf beim Systemstart im Mehrbenutzerbetrieb
- Runlevel 5 : Aufruf beim Systemstart mit graphischem System im Mehrbenutzerbetrieb,
- Runlevel 6 : Aufgerufen beim Reboot des System.

Jeder Dienst kann so konfiguriert werden, dass er beim Wechsel des Servers in einen dieser Runlevels automatisch startet oder beendet wird.
Das Prinzip besteht darin, Verbindungen in dem Verzeichnis herzustellen, welches dem Runlevel entspricht und das wiederum auf das entsprechende Startskript zeigt.

Nehmen wir zum Beispiel named, den DNS-Server. Dieser Service ist zum Start im Runlevel 3 konfiguriert und zum Stoppen im Runlevel 0.

Das Startskript befindet sich in /etc/init.d/:

[root@julien root]# ls -al /etc/init.d/named
-rwxr-xr-x 1 root root 2281 jui 13 2004 /etc/init.d/named


Ein Link wurde erstellt in /etc/rc3.d/ (Ordner, welcher die Anwendungsdaten von Runlevel 3 beinhaltet):

[root@julien root]# ls -al /etc/rc3.d/S13named
lrwxrwxrwx 1 root root 22 oct 2 15:55 /etc/rc3.d/S13named -> ../init.d/named


Und ein anderer in /etc/rc0.d/ (Ordner, welcher die Anwendungsdaten von Runlevel 0 beinhaltet):

[root@julien root]# ls -al /etc/rc0.d/K45named
lrwxrwxrwx 1 root root 15 oct 2 15:37 /etc/rc0.d/K45named -> ../init.d/named

Im Runlevel drei ruft der Link S13named also automatisch den Befehl /etc/init.d/named start auf.
Im Runlevel 0 ruft der Link K45named automatisch den Befehl /etc/init.d/named stop auf.

Der Buchstabe S des Links gibt eine Start-Aktion an, der Buchstabe K eine Aktion beim Beenden.
Die Zahl hat ebenfalls eine wichtige Bedeutung, denn Sie gibt die Reihenfolge an, in der die Dienste gestartet werden.
Es ist in der Tat nicht möglich, den DNS-Server vor dem Dienst zu starten, welcher die Netzkonfiguration verwaltet.

Die dedizierten OVH-Server starten im runlevel 3.
Wenn Sie möchten, dass ein Dienst automatisch beim Boot des Servers startet, reicht es aus, diesen für die Runlevels 2, 3, 4 und 5 zu konfigurieren.


Administration


Glücklicherweise liefert Redhat ein Werkzeug, welches das Leben dbzgl. vereinfacht. Es handelt sich um chkconfig.
Dieses Werkzeug erlaubt, die derzeitige Konfiguration aufzulisten und diese einfach zu ändern.


Dienste konfigurieren


  • Dienste auflisten, deren Start für den Boot des Servers konfiguriert wurden

Um die derzeitige Konfiguration aufzulisten müssen Sie folgenden Befehl ausführen:

[root@julien root]# /sbin/chkconfig --list
webmin 0:Arrêt 1:Arrêt 2:Marche 3:Marche 4:Arrêt 5:Marche 6:Arrêt
atd 0:Arrêt 1:Arrêt 2:Arrêt 3:Marche 4:Marche 5:Marche 6:Arrêt
watchdog 0:Arrêt 1:Arrêt 2:Arrêt 3:Arrêt 4:Arrêt 5:Arrêt 6:Arrêt
syslog 0:Arrêt 1:Arrêt 2:Marche 3:Marche 4:Marche 5:Marche 6:Arrêt

Oder für mehr Details eines Dienstes (Hier MySQL):

[root@julien root]# /sbin/chkconfig --list mysql
mysql 0:Arrêt 1:Arrêt 2:Marche 3:Marche 4:Marche 5:Marche 6:Arrêt

Das Ergebnis gibt alle Runlevels und die durchzuführende Aktion für jeden Start oder Stop des Dienstes an.


Start- Konfiguration


  • Das Verhalten eines Dienstes beim Start anpassen

Um die Aktionen auf mehreren Runlevels zu ändern, wird der Befehl in dieser Form benutzt: /sbin/chkconfig --level

Nehmen Sie zum Beispiel den Fall eines MySQL-Servers, welcher nicht automatisch beim Boot des Servers startet. Eine Auflistung der Konfiguration macht deutlich, dass dieser Dienst nicht konfiguriert ist, um automatisch zu starten.
Es nun ausreichend, die Konfiguration folgendermaßen zu ändern, um den Dienst beim nächsten Hochfahren des Servers automatisch zu starten:

[root@julien root]#/sbin/chkconfig --list mysql
mysql 0:Arrêt 1:Arrêt 2:Arrêt 3:Arrêt 4:Arrêt 5:Arrêt 6:Arrêt

[root@julien root]# /sbin/chkconfig --level 2345 mysql on

[root@julien root]# /sbin/chkconfig --list mysql
mysql 0:Arrêt 1:Arrêt 2:Marche 3:Marche 4:Marche 5:Marche 6:Arrêt



Autostart eines Dienstes


Dieses Tool ist auch in der Lage, einen neuen Dienst anhand seiner Startdartei zu übernehmen und alle notwendigen Verbindungen automatisch herzustellen.

Nehmen wir zum Beispiel die Startdatei für MySQL:

[root@julien root]# cat /etc/init.d/mysql
#!/bin/sh
# Copyright Abandoned 1996 TCX DataKonsult? AB & Monty Program KB & Detron HB
# This file is public domain and comes with NO WARRANTY of any kind

# MySQL daemon start/stop script.

# Usually this is put in /etc/init.d (at least on machines SYSV R4 based
# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.
# When this is done the mysql server will be started when the machine is
# started and shut down when the systems goes down.

# Comments to support chkconfig on RedHat? Linux
# chkconfig: 2345 90 20
# description: A very fast and reliable SQL database engine.


Die relevante Zeile ist diese: chkconfig: 2345 90 20,
denn sie erlaubt die automatische Konfiguration des MySQL-Dienstes mit Hilfe des Werkzeuges chkconfig. Hierdurch wird der Start des Dienstes automatisch zu den Runlevels 2, 3, 4 und 5 hinzugefügt mit der Sequenznummer 90 für den Start und die Sequenznummer 20 den Stop.

Zum Beispiel:

[root@julien root]# /sbin/chkconfig --add mysql


Stellen Sie sicher, dass alles korrekt ist (Achtung, französisches OS im Beispiel):

[root@julien root]# /sbin/chkconfig --list mysql
mysql 0:Arrêt 1:Arrêt 2:Marche 3:Marche 4:Marche 5:Marche 6:Arrêt

[root@julien root]# ls -al /etc/rc3.d/S90mysql
lrwxr-xr-x 1 root root 15 fév 12 16:17 /etc/rc3.d/S90mysql -> ../init.d/mysql

[root@julien root]# ls -al /etc/rc0.d/K20mysql
lrwxr-xr-x 1 root root 15 fév 12 16:17 /etc/rc0.d/K20mysql -> ../init.d/mysql



Dienst beim Start beenden


Wenn die Verwaltung eines Dienstes erst einmal per chkconfig hinzugefügt worden ist, bleibt dieser in der Liste, solange die Startdartei existiert.
Andererseits ist es möglich, die Startaktionen in allen Runlevels auf einmal abzuschaffen.

Zum Beispiel:

[root@julien root]# /sbin/chkconfig --del mysql


Überprüfen Sie, ob alles zurückgesetzt wurde:

[root@julien root]# /sbin/chkconfig --list mysql
mysql 0:Arrêt 1:Arrêt 2:Arrêt 3:Arrêt 4:Arrêt 5:Arrêt 6:Arrêt

[root@julien root]# ls -al /etc/rc3.d/S90mysql
ls: /etc/rc3.d/S90mysql: Aucun fichier ou répertoire de ce type