|
|
System V: init.d
Je nach System befinden sich im Verzeichnis /etc/init.d oder im Verzeichnis
/sbin/init.d die Skripten für den Start der Systemprozesse, die beim
Systemstart ausgeführt werden.Zum Thema Programmierung
von Shellskripten siehe S. shellskript.
Dabei handelt es sich ausnahmslos um Shellskripten, deren Kommandos mit
einem normalen Editor bearbeitet werden können. So ist es möglich,
hier mit Hilfe des Kommandos Um die Runlevel zu initialisieren, gibt es für jeden ein eigenes Verzeichnis rcX.d. Dabei steht X für den jeweiligen Runlevel. In jedem der Runlevelverzeichnisse befinden sich ausschließlich symbolische Links auf die eben betrachteten Startskripten. Es existiert immer dann ein symbolischer Link, wenn beim Übergang in den jeweiligen Runlevel das Skript ausgeführt werden soll. Dabei haben alle Links ein Präfix S oder K, gefolgt von zwei Ziffern. Das Skript mit dem Präfix S soll die Prozesse starten, und K soll sie beenden (K wie kill). Die Ziffern sorgen dafür, dass die Prozesse in der richtigen Reihenfolge gestartet werden. Beispielsweise heißen die Links in rc2.d für apache, den Webserver, S20apache und K20apache. Das erste Link wird beim Eintreten in den Runlevel 2 und der andere beim Verlassen des Runlevels aufgerufen. Die Nummer 20 bezeichnet die Reihenfolge. S19 wird beispielsweise vor S20apache aufgerufen. Muss also der neue Dienst vor dem Webserver starten, sollte S19 als Präfix verwendet werden. Braucht der neue Server allerdings die Anwesenheit von Apache, sollte der Name des Links mit S21 oder höher beginnen.
Man schreibt ein Startskript, das als Parameter die
Wörter start und stop verarbeitet. Einige dieser Skripten verarbeiten
auch das Kommando restart. Ein solches Skript, das man zunächst im Verzeichnis
init.d ablegt, besteht aus einer großen case-Anweisung.
Als Beispiel soll der Dienst unfug gestartet werden. Der Dienst unfug
wird durch das Programm
#! /bin/sh test -f /usr/bin/unfugd || exit 0 case "$1" in start) echo "Starte Unfug-Daemon" /usr/bin/unfugd ;; stop) echo "Stoppe Unfug-Daemon" kill `cat /var/run/unfugd.pid` ;; restart) echo "Restart Unfug" kill `cat /var/run/unfugd.pid` /usr/bin/unfugd ;; *) echo "usage: MATH $0 start | stop | restart" exit 1 ;; esac$
In der ersten Zeile wird festgelegt, dass dieses Skript von der einfachen
Bourne Shell gestartet wird. Die zweite Zeile testet, ob es das Programm
Bei
Startskripten sollten sehr sorgfältig erstellt werden. Dabei ist ein
Abbruch nicht einmal so dramatisch. Falls aber ein Startskript hängen bleibt
oder in einer Endlosschleife verharrt, bleibt der Rechner beim Booten
stehen.
In einer solchen Situation brauchen Sie eine Möglichkeit, den Computer von
einem anderen Bootmedium zu starten. Anschließend binden Sie die Platte
per
mount (siehe S. mount) ein und können dann das
Skript löschen oder sogar bearbeiten.
Ausführliche Informationen über das Schreiben von Shellskripten und die verwendeten Anweisungen folgen später (siehe S. shellskript). Will man ein Skript beim Systemstart hochfahren, muss man zunächst überlegen, in welchem Runlevel es gestartet werden soll, und dann mit den anderen Links vergleichen, zu welchem Zeitpunkt es gestartet werden muss.
Nachdem nun das Skript
cd rc2.d ln -s ../unfug S21unfug ln -s ../unfug K19unfug Die Ausgabemeldungen des letzten Bootprozesses werden normalerweise in einer eigenen Datei protokolliert. Unter HP-UX ist das /etc/rc.log, unter Linux /var/log/boot.msg.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|