Hinweis: Im Oktober 2012 wurde ich darüber informiert das
mein seit etlichen Jahren auf dieser Seite veröffentlichte
Script nicht (mehr) funktionieren würde. Ich habe den
Fehler gesucht und die Änderung auf einer neuen Seite in
meinem Blog[1]
beschrieben. Da aber noch immer viele Forenbeiträge auf
diese Seite führen, habe ich den alten Inhalt unverändert
beibehalten.
Die neue Version ist über den Link in der Fußnote auf dieser
Seite zu erreichen.
Eigentlich ist das folgende Script keine große Sache und
bevor man es sich im Web gesucht hat, hat man es schneller
und leichter selbst geschrieben. Dennoch gebe ich aus zwei
Gründen hier eine kleine Anleitung zum automatischen
Starten und Beenden des Distributed-Net-Clients an –
natürlich mit dem dazugehörigen Shellscript.
Zunächst einfach mal das Script:
#! /bin/bash # # dnetcpath => path to dnetc binarys # dnetcpath=/home/foo/dnetc case "CONTENT" in start) echo -n "Starting dnetc client: " $dnetcpath/dnetc -hide ;; stop) echo -n "Stopping dnetc client: " $dnetcpath/dnetc -shutdown ;; flush) echo -n "flushing data: " $dnetcpath/dnetc -flush ;; *) echo -n "Usage: dnetc [start|stop|flush]" esac
Für die Angabe des Pfades zu den Client-Binarys wird eine
Variable verwendet. Das Beispiel würde voraussetzen, das
sich die Binarys im Verzeichnis /home/foo/dnetc
befinden. Wo man die aktuellen Binary herbekommt?
Beispielsweise hier.
Welche Binarys man nehmen muß, sollte man schon selbst
wissen. Für die meisten Linux-Systeme mit ix86-Prozessoren
wäre es das Archiv
dnetc-linux-x86-elf.tar.gz
.
Nun aber zurück zum Script. Die Funktion sollte eigentlich
ersichtlich sein. Mit den Parametern »start«, »stop« und
»flush« werden die entsprechenden Parameter an den Client
weitergegeben.
Das Script muß in ein Verzeichnis gespeichert werden,
welches sich in der Umgebungsvariablen PATH
befindet. Da es sich um ein selbstgeschriebenes Script
handelt, schlage ich das Verzeichnis /usr/bin
vor.
Ich habe dem Script den Dateinamen dnetc
gegeben.
Das Script muß ausführbar sein, daher muß man – sofern noch
nicht geschehen – die Rechte dementsprechend setzen:
chmod 755 /usr/bin/dnetc
.
Nun sollte das Script eigentlich aufgerufen werden können.
Zuvor aus dem /usr/bin
-Verzeichnis in ein anderes
Wechseln und dann an der Konsole dnetc
eingeben.
Es sollte folgende Ausgabe erscheinen:
Usage: dnetc [start|stop|flush]
Das Script wird also gefunden und kann ausgeführt werden.
Somit steht die Option flush
permanent zur
Verfügung. Für das automatische Starten/Beenden des Clients
hat es allerdings keine Relevanz.
Man hätte das Script auch nach /etc/init.d
legen
können, dort befinden sich andere Scripte, welche beim
Wechsel der Runlevel ausgeführt werden. Allerdings ist das
Script dann nicht ohne Angabe des
kompletten Pfades zu erreichen.
Nun zu den Runleveln. Wie gerade schon erwähnt, werden
Scripte bei Wechseln von Runleveln ausgeführt. Für das
dnetc-Script waren bei mir drei Runlevel zu beachten: Level
0 (halt), Level 2 (standard Runlevel nach dem Systemstart)
und Level 6 (reboot).
Daher werden in den entsprechenden Verzeichnissen Symlinks
angelegt:
ln -s /usr/bin/dnetc /etc/rc0.d/K99dnetc (beendet Client im Level 0) ln -s /usr/bin/dnetc /etc/rc6.d/K99dnetc (beendet Client im Level 6) ln -s /usr/bin/dnetc /etc/rc2.d/S99dnetc (startet Client im Level 2)
Jetzt sollte der Client beim Herunterfahren bzw. Rebooten beendet, und beim Systemstart bzw. Wechseln ins Runlevel 2 gestartet werden.