Runlevel scripte - Scripts selbst erstellen

Aus Linupedia.org
Wechseln zu: Navigation, Suche

Wer einen eigenen Dienst in den Boot-Ablauf einhängen möchte, kann das nach folgendem Bauplan tun: In

cd /etc/init.d 

wird ein beliebiges Script (oder skeleton) kopiert. Es gibt im Internet und in entsprechenden Foren schon vorgefertigte Scripte für allerlei Einsatzzwecke.

Diese Sektion muss noch angepasst werden (das Beispiel ist von named):

### BEGIN INIT INFO 
# Provides: named 
# Required-Start: $network $remote_fs $syslog 
# Required-Stop: 
# Default-Start: 3 5 
# Default-Stop: 
# Description: Starts internet domain name server (DNS) BIND 9 
### END INIT INFO

Zur Erklärung der einzelnen Zeilen:

Provides:       <== der Name des Dienstes 
Required-Start: <== Liste der Dienste die VOR dem erstellten Dienst gestartet werden müssen 
Default-Start:  <== Liste der Runlevel, in denen der Dienst gestartet wird 
Description:    <== kurze Beschreibung des Dienstes 

Danach muss das Script auch ausführbar gemacht werden, damit es auch gestartet werden kann. Das erreicht man mit:

chmod +x meinScript 

Wenn dieses Attribut gesetzt ist, muss es auch noch aktiviert werden:

insserv meinScript 

Diesen Schritt kann man auch über Yast -> System -> Runlevel-Editor vollziehen.

Damit das Script auch aufgerufen werden kann, muss man noch den openSUSE-spezifischen Link erstellen:

cd /usr/sbin oder cd /sbin 
ln -s /etc/init.d/meinScript rcmeinScript 

Den Test, ob das Script startet und funktioniert, kann man mit diesen beiden Befehlen machen:

rcmeinScript start
rcmeinScript stop 

Der erste startet, der zweite stoppt das Script.

Weitere Dokumentation findet man mit:

man init 

TIP: Mit dem Befehl

rc_status -v 

kann DONE, FAILED, SKIPPED etc. ausgegeben werden. Wenn die Zeile der Ausgabe nicht stimmt, probiere

rc_status -v2 

damit wird die Ausgabe zwei Zeilen höher ausgegeben.

Für die Durchführung und die Abhängigkeiten der Scripte sind bei openSUSE die Eintragungen in den vier Dateien /etc/init.d/.depend.* maßgeblich, die von insserv aktuell gehalten werden. Die Nummern für die in /etc/init.d/*.d/ angelegten Verknüpfungen sind nur mehr eine Verbeugung an die Vergangenheit (mit ihrem sequentiellen und damit langsamen Abarbeiten der Scripte), das manuelle Erstellen einer solchen Verknüpfung nützt daher nichts.