Init-Skripte für Debian/GNU Linux
Das englische Original gibt es bei www.debian-administration.org
Um beim beim Wechsel zwischen System-Runlevels,
Um einen einen neuen Service während des Bootvorgangs zu starten, sollte das notwendige Skript im Verzeichnis /etc/init.d gespeichert werden. In dem Verzeichnis befinden sich bereits zahlreiche Skripte, an denen man sich ein Beispiel nehmen kann.
Im Folgenden ein sehr einfaches Skript, das in zwei Abschnitte unterteilt ist:
- Code, der immer ausgeführt wird
- Code, der nur ausgeführt wird, wenn das Script mit "start" oder "stop" aufgerufen wird
#! /bin/sh
# /etc/init.d/blafasel
#
# Das hier wird immer ausgefuehrt:
touch /var/lock/dingsbums
# Bestimmte Funktionen ausfuehren, wenn danach gefragt wird:
case "$1" in
start)
echo "Skript blafasel wird gestartet... "
echo "Hier koennte auch mehr passieren."
;;
stop)
echo "Skript blafasel wird gestoppt... "
echo "Hier koennte auch noch viel mehr passieren."
;;
*)
echo "Benutzung: /etc/init.d/blafasel {start|stop}"
exit 1
;;
esac
exit 0
Nachdem das Skript im richtigen Verzeichnis gespeichert ist, muss dafür gesorgt werden, dass es ausführbar ist:
lexi:~# chmod 755 /etc/init.d/blafasel
Entsprechende symbolische Links sorgen dafür, dass das Skript beim Bootvorgang oder beim Herunterfahren ausgeführt wird. Der einfachste Weg diese Links zu erzeugen ist das Debian-spezifische Kommando update-rc.d:
lexi:~# update-rc.d blafasel defaults Adding system startup for /etc/init.d/blafasel ... /etc/rc0.d/K20blafasel -> ../init.d/blafasel /etc/rc1.d/K20blafasel -> ../init.d/blafasel /etc/rc6.d/K20blafasel -> ../init.d/blafasel /etc/rc2.d/S20blafasel -> ../init.d/blafasel /etc/rc3.d/S20blafasel -> ../init.d/blafasel /etc/rc4.d/S20blafasel -> ../init.d/blafasel /etc/rc5.d/S20blafasel -> ../init.d/blafasel
Um das Skript wieder aus dem Bootvorgang zu entfernen:
lexi:~# update-rc.d -f blafasel remove update-rc.d: /etc/init.d/blafasel exists during rc.d purge (continuing) Removing any system startup links for /etc/init.d/blafasel ... /etc/rc0.d/K20blafasel /etc/rc1.d/K20blafasel /etc/rc2.d/S20blafasel /etc/rc3.d/S20blafasel /etc/rc4.d/S20blafasel /etc/rc5.d/S20blafasel /etc/rc6.d/K20blafasel
Dadurch bleibt das Skript selber an Ort und Stelle. Es werden lediglich die Links entfernt, die das automatische Ausführen bewirken.
Weitere Informationen sind mit dem Kommando "man update-rc.d" abrufbar.
