[Problem] Problem mit Init-Skript

dad401

Neuer User
Mitglied seit
26 Aug 2007
Beiträge
89
Punkte für Reaktionen
2
Punkte
8
Hallo,

für eine FHEM Installation, habe ich mir ein Init-Skript geschrieben/ergänzt, was soweit funktioniert. Problematisch ist derzeit noch der Start (der funktioniert, aber nicht ganz 100%) über die WebGUI.

Ich nutze folgende Startfunktion in /etc/init.d/rc.fhem:
Code:
start() {
    echo -n "Starting FHEM ... "
    trap "" SIGHUP

    PATH=$FHEM_PATH:$PATH
    export PATH
    export LD_LIBRARY_PATH=$FHEM_PATH/lib
    export PERL5LIB=$FHEM_PATH/lib/perl:$FHEM_PATH/lib/perl/arch

    cd $FHEM_PATH
    ./perl fhem.pl fhem.cfg &
    echo 'done.'
}

Leider entstehen beim Aufruf von "./perl fhem.pl fhem.cfg &" Ausgaben, die im Webinterface nach Starten des Dienstes angezeigt werden - ebenfalls schliesst die Anzeige im Browser nicht ab - der Browser wartet/lädt ständig.

Anstatt der richtigen Ausgabe im Browser wie:
Code:
Starte fhem:

Starting FHEM ... done.

kommt folgendes:

Code:
Starte fhem:

Use of uninitialized value $temperature in concatenation (.) or string at ./FHEM/59_Weather.pm line 329, <$fh> line 86.
Use of uninitialized value $temperature in concatenation (.) or string at ./FHEM/59_Weather.pm line 329, <$fh> line 88.
Use of uninitialized value in string lt at fhem.pl line 1792, <$fh> line 84.
Use of uninitialized value in string lt at fhem.pl line 1792, <$fh> line 108.

Die Meldungen sind jetzt nicht tragisch - ich wüsste lieber, wie ich das ganze in rc.fhem aufrufen sollte, damit diese Meldungen nicht mit ausgegeben werden. Zusätzlich werden ebenfalls 2 "hängende" Prozesse erzeugt:
Code:
S     0  9281  9280  1204   320 0:0   01:37 00:00:00 {busybox} sed -r    s#(^WARNING:) #<span class="failure">\1</span> #   s# (failed|already running|not configured)\.$# <span class="failure">\1</spa
S     0  9282  9279  1204   320 0:0   01:37 00:00:00 {busybox} sed -e     s/&/\&amp;/g    s/</\&lt;/g    s/>/\&gt;/g    s/'/\'/g    s/"/\&quot;/g

Marcus
 
Die Ausgabe musst du mit "> /dev/null 2>&1" ins Nirvana umleiten. Die hängenden Prozesse kommen daher, dass durch deinen Aufruf der Perl-Prozess nicht richtig in den Hintergrund geht (zumindest nicht so wie man es von einem Daemon erwartet). Die Filedescriptoren bleiben offen und deshalb bleibt das hängen. Du kannst also probieren die FDs zu schließen, dazu ist evtl. noch < /dev/null zusätzlich als Parameter nötig oder du verwendest die busybox start-stop-daemon Funktion.

Gruß
Oliver
 
Danke für die Tipps - habe nun Deine erste Idee umgesetzt, da der start-stop-daemon in der Standard-Busybox-Version kein --chdir kann, welches ich jedoch benötige, da meine Konfiguration von fhem auf relative Pfade zugreift.

Das Skript startet nun so wie es soll per WebGUI :-) - habe es mal angehangen.
 

Anhänge

Kostenlos!

Statistik des Forums

Themen
248,920
Beiträge
2,305,113
Mitglieder
378,645
Neuestes Mitglied
nikitarajusa