PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Shellscript beim Boot starten?



erichabg
25.10.2008, 18:05
Hallo Allerseits!

Habe folgendes Problem: Ich möchte, dass beim Boot ein Shellscript gestartet wird, welches die Druckerwarteschlange überwacht und ggfs. den Drucker einschaltet.

Das funktioniert soweit auch zuverläßig nur....
Ich starte das Script mittels eines Links in /opt/etc/init.d, da sich das Script aber nicht beendet, sondern in einer Endlosschleife die Druckerwarteschlange auf anstehende Aufträge überprüft, hört die Slug nicht mehr zum blinken auf (Status-LED).

Nun die Frage, wie starte ich ein Shellscript das ständig laufen soll, ohne den o.g. Nebeneffekt?

Nur zur Vollständigkeit hier das Script S99prenable:
#! /bin/sh

while [ true ]
do
sleep 15

# check the cups spool dir for new jobs
CHECKSPOOL=$(ls /opt/var/spool/cups/d*)

if [ "$CHECKSPOOL" != "" ]; then
echo enabling OKI_B4100
/usr/bin/OKI_on.sh
OKI_on=y
sleep 30
/opt/sbin/cupsenable OKI_B4100
sleep 600

else

if [ "$OKI_on" = "y" ]; then
echo disabling OKI B4100
/usr/bin/OKI_off.sh >/dev/null
OKI_on=n
fi

fi
done

Grüße
Erich

PS:
Das Ein-/Ausschalten des Druckers erfolgt mit einem FS10-Funkschalter und EZcontrol T-10

Stone
26.10.2008, 01:09
Hallo erichabg,

du kannst dein Script als Dämon laufen lassen. Siehe hier (http://www.gargi.org/showpost.php?p=3141&postcount=10)

Du musst nur wie geschrieben, die Pfade überprüfen, da bei mir kein Unslung läuft. Dein Skript (prenable) könnte z.B. unter /usr/sbin/ liegen. Dann würde DAEMON=/usr/sbin/prenable heißen NAME=prenable und DESC=prenable.
Wenn du jetzt einen Symlink anlegst mit "ln -s /opt/etc/init.d/S99prenable /usr/sbin/(script aus dem angegebenen Link)" wird dein Script automatisch beim Systemstart gestartet und läuft als Dämon im Hintergrund.

Bei mir funktioniert es einwandfrei und du kannst es mit "prenable start" und "prenable stop" an und abschalten. :)

Gruß Stone

Smurphy
26.10.2008, 09:52
Alternativ kannst du es in in der inittab bzw. event.d/? anlegen :) (Je nach BS Version).

Dann ueberprueft der init-daemon dass das Skript auch andauern laeuft. Wenn ein Fehler vorliegt, und das script sich endloss startet - stoppt er dies nach dem 5ten Start fuer 5 Minuten. Siehst du dann im log.

Einfach mal auf der slug ein: man init machen. Der sagt dir dann wo du's eintragen musst

Gargi
26.10.2008, 10:33
Ne, bei der Slug gibt es nur das initd, einzelne runlevel habe ich da bislang nicht gesehen :) Die liegen einfach im /opt/etc/init.d Verzeichnis. Ist einwenig vertrackt mit dem Teil, weil ein Teil des Systems auf dem internen Flash liegt und teilweise via Symlinks auf die Platte in die halbwegs linuskonformen Verzeichnisse gemappt sind. Da läuft so manches etwas anders :) Von daher liebäugle ich im Moment immer mehr mit dem ARM Debian, da es da weniger Verrenkungen in dem Bereich gibt. Zum Linux lernen ist somit die Unslung mit etwas Vorsicht zu genießen, da man dann wenn man mal den Weg mit einer anderen Distribution kreuzt schon ordentlich umdenken muss.

Viele Grüße,
Gargi

erichabg
27.10.2008, 07:41
Hallo Allerseits!

Danke für Eure Hilfe! Denke das mit dem Script ist die Lösung, die ich suchte.
Hab's auch gleich eingebaut!

Nochmals Danke!

Grüße
Erich

erichabg
27.10.2008, 08:50
Hallo!

Hab mich leider zu früh gefreut! :(
Das Kommando start-stop-daemon scheint's nur unter Debian zu geben, nicht unter Unslung.
Aber ich werde mir vermutlich eine zweite Slug holen und dann damit mal mit Debian experimentieren.


Grüße
Erich