[gelöst]Freetz-Webif bleibt hängen beim Aufruf eines Scriptes über die Package rc.x

wonderdoc

Mitglied
Mitglied seit
16 Aug 2006
Beiträge
214
Punkte für Reaktionen
0
Punkte
0
Hallo,

Ich habe momentan ein Problem mit dem WebIf.
Ich habe mir ein Packet gebastelt/erweitert.
Dazu habe ich mir ein Watchdog-Script gebastelt, welches eine While-Schleife enthält, die dann zyklisch einen Daemon überwacht und ggf über die rc.* neustartet.
Dazu rufe ich das Watchdog-Script in der start-routine der rc.* des Packages auf.
Code:
/tmp/flash/$DAEMON_WD & > /dev/null 2>&1
Starte ich das Package "rc.* start" per Telnet, dann wird der Daemon und das Daemon-Watchdog Script ordnungsgemäß gestartet.
Starte ich das Package nun aber über die Diensteverwaltung des WebIfs, dann bleibt das WebIf mit leeren Browserfenster hängen.
Erst nachdem ich das Watchdog-Script manuell über Telnet kille, erscheint die WebIf-Seite(Freetz - Starte ....) wieder.

Lt ps hängt da vermutlich was in der exec.cgi.
Code:
 3164 root       1440 S   httpd -p 81 -c /mod/etc/httpd.conf -h /usr/mww/ -r Fr
 3165 root       1444 S   /bin/sh /usr/mww/cgi-bin/exec.cgi 
 3171 root       1444 S   /bin/sh /usr/mww/cgi-bin/exec.cgi 
 3172 root       1420 S   sed -e        s/&/\&amp;/g       s/</\&lt;/g       s/

Es hängt auf jedem Fall mit dem Aufruf des Watchdog-Scripts zusammen.
(Das Script läuft ja im Hintergrund in einer Schleife)
Ist dieses eine bekannte Sache?
Gibt es dazu ein Workaround?

mfg
Wonderdoc
 
Zuletzt bearbeitet:
Schau dir mal dieses Changeset an. Evtl. musst du in deinem Skript die FDs schließen...

MfG Oliver
 
Hi Oliver,

Ich habe momentan Freetz freetz-1.0-2342M auf der Box.
Was genau meinst du mit FDs schließen?

Oder meinst du einfach die Zeile "exec 1>&-;exec 2>&-" in mein Script einfügen?

EDIT:

Super, hat funktioniert.
Ich habe die Zeile in meinen Watchdog-Script vor der While-Schleife eingefügt.
Nun Funktioniert das WebIf bei Start des Packages wieder.

Danke für die schnelle Hilfe.

mfg
Wonderdoc
 
Zuletzt bearbeitet:
Es wäre übrigens geschickter, auf /dev/null umzuleiten, als die Dateien zu schließen.

Anderenfalls können regulär geöffnete Dateien die Nummern 0 bis 2 bekommen, und das kann zu seltsamen Effekten führen. Ob und welche Probleme es gibt, hängt von den einzelnen Programmen ab, aber es ist sicherer, es nicht darauf ankommen zu lassen.
 
Sollten wir das im spindown-package auch ändern?

MfG Oliver
 
Es kann zumindest nicht schaden.

Ob es nötig ist oder nicht ist schwer zu sagen, ohne sich das Programm in allen Details und allen möglicherweise auftretenden Konstellationen anzuschauen, daher wird generell empfohlen, die Dateien 0 bis 2 nicht zu schließen, sondern auf /dev/null umzulenken. Damit ist man auf der sicheren Seite, ob es nun notwendig ist oder nicht.
 
Hallo,

Ist dann "exec 1 > /dev/null; exec 2 > /dev/null" richtig?

mfg
Wonderdoc
 
Ja, auch wenn man es kürzer schreiben kann:
Code:
exec 1> /dev/null 2> /dev/null
oder
exec > /dev/null 2> /dev/null
und ggf. auch noch stdin
exec < /dev/null > /dev/null 2> /dev/null
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.