"Init.d" Skript mit folgenden Funktionen?

Bash, Shell, PHP, Python, Perl, CGI
Anonymous

"Init.d" Skript mit folgenden Funktionen?

Post by Anonymous »

Hi Leutz,

wollte mich eben dran machen ein Skript zu schreiben (so wie "sshd -start" und "sshd -stop") komme aber nicht ganz dahinter wie das funktioniert.

Was ich möchte: Ein Prozess der mehrere Unterprozesse erzeugt, soll nach der PID gekillt werden - dabei soll aber darauf geschau werden, welcher Prozess gekillt wird, da die einzelnen Hauptprozesse verschiedene Config-Files haben (mit verschiedenen Namen).

Hat jemand da (wenigstens ansatzweise) eine Idee, wie ich das machen könnte?

Ich stell mir vor, dass der Befehl dann so aussieht:

Code: Select all

skript -start configfilexy
Also dass ich noch eine Parameter übergeben kann, geht das überhaupt?


Gruss,
Jürgen
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09

Re: "Init.d" Skript mit folgenden Funktionen?

Post by majortermi »

hostprofi24 wrote: Hat jemand da (wenigstens ansatzweise) eine Idee, wie ich das machen könnte?

Ich stell mir vor, dass der Befehl dann so aussieht:

Code: Select all

skript -start configfilexy
Also dass ich noch eine Parameter übergeben kann, geht das überhaupt?
Erzeuge einfach aus der Vorlage für init.d Skript ein neues Skript, dass den Prozess startet bzw. killt und den Pfad zur Konfigurationsdatei als Umgebungsvariable übernimmt.
Dann musst du einfach nur vor dem Starten des Skripts die Umgebungsvariable setzen und fertig (ist IMHO die einfachste Lösung).
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
Anonymous

Re: "Init.d" Skript mit folgenden Funktionen?

Post by Anonymous »

Hmmmja, auf das wäre ich auch gekommen. Aber da zählen dann ja andere Parameter, damit ich mir mit dem Skript nicht andere Prozesse abschiessen - :roll: - wäre ja auch nicht so fein.

Hat da vielleicht jemand ein Beispiel dafür, dass er mir posten kann? Das wäre super genial. :wink:
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: "Init.d" Skript mit folgenden Funktionen?

Post by dea »

Ich kann nur für Debian sprechen, da gibt es zum einen eine wunderbare Vorlage /etc/init.d/skeleton und zum anderen start-stop-daemon, ein Binary das genau das kann/macht, was Du möchtest (und viel mehr :) ) (start-stop-daemon erzeugt beim Starten PID-Files, referenziert standardmäßig auf /proc/<PID>/exe, kann chuid/en und Parameter an das zu startende/stoppende Binary/Skript weiterreichen)

Wenn Du Debianized bist, dann hättest Du also alles was Du bräuchtest.

Damit Du Deinen Aufruf /etc/init.d/skript start configfilexy (ohne -) realisieren kannst musst Du eigentlich nur die Variable ${2} verwursten.
So etwa:

Code: Select all

#!/bin/bash
# /etc/init.d/skript

# ...

# $2 besser in eine benannte Variable packen zwecks selbst-doku ;)
CFG_FILE=${2}

# ...

case "$1" in
    start)
        # starte Job mit ${CFG_FILE} als Parameter
        ;;
    stop)
        # stoppe Job mit den Daten aus ${CFG_FILE}
        ;;

    # ...

    *)
        echo ${usage}
        exit 1
        ;;
esac
Beim Aufruf '/etc/init.d/skript start configfilexy' landet 'start' in ${1} und 'configfilexy' in ${2} und damit in ${CFG_FILE} und schließlich dort, wo wir es benutzen möchten :)
Anonymous

Re: "Init.d" Skript mit folgenden Funktionen?

Post by Anonymous »

Hi danke,

das sieht mich sehr gut und logisch an. Warum sieht das nur alles sooo schwer aus :roll: - naja, ich bin unter "Suse 8.1" (Rootserver) und "Debian Woody 3.0" (Server@Home) unterwegs. Aber ich brauche es ohnehin für den Debian'er :lol:

Ich werd das morgen mal testen, auf jeden Fall vielen Dank, das muss doch klappen :idea: :-D

Gruss,
Jürgen
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: "Init.d" Skript mit folgenden Funktionen?

Post by dea »

Hau rein :)

Sieht wüst aus, ist aber lustigerweise recht einfach, wenn nur die Sache mit der Doku nicht wär' ... ;)
Anonymous

Re: "Init.d" Skript mit folgenden Funktionen?

Post by Anonymous »

Ja, du hast total recht. Die Dokus sind manchmal eecht mehr verwirrend als das sie helfen. Da bringen oft einfach simple Erklärungen und Beispiele in den meisten Fällen meist mehr. Vielen Dank für das "Mini-Skript", es scheint zu funktionieren. :wink: