Programm schließt sich von selbst?

eYo

Neuer User
Mitglied seit
5 Jan 2008
Beiträge
165
Punkte für Reaktionen
0
Punkte
0
Hallo,

wenn ich via "Dienste" ein Programm über den "Start" Button starte (ist nur bei einem), wird folgender Befehl ausgeführt: "/bin/sh /mod/etc/init.d/rc.xxx"

Funktioniert auch alles, die Ausgabe ist korrekt, das Programm wird gestartet... aber dann schließt es sich auf einmal wieder?!

Wenn ich den Befehl aber über die Shell manuell eingebe, bleibt das Programm gestartet.

Woran kann das liegen? An den Rechten scheint es ja nicht zu liegen?! Das Programm ist ja kurz "gestartet"...
 
Wahrscheinlich an dem Programm selbst. Es beendet sich wohl gleich wieder. Daher wäre es gut zu wissen, um welches es sich handelt.
 
Oder am rc.xxx-Script, ... wenn das Programm seine Aufgabe erledigt hat (z. B. für nodaemon-Modus).
 
@linuxkasten
Wir wollen vermutlich nicht wissen um welches Programm es sich handelt, da der Thread sonst gelöscht werden muss. :)

Loggt das Programm den in den syslog? Kannst du den Loglevel vielleicht erhöhen? Startet das Skript das Programm anders als du es von der Shell machst? Mit "sh -x /etc/init.d/rc.xxx start" bekommst du die Zeile angezeigt.

MfG Oliver
 
Gut erkannt Oli :)

Also... ich habe via Dienste-Seite das Skript angestoßen, danach direkt "ps w | grep rc.xxx".
Ausgegeben wurde mir dann halt: "/bin/sh /mod/etc/init.d/rc.xxx start".

Danach habe ich "ps w | grep filename" gemacht, also zu dem Zeitpunkt, wo im WebIF die Nachricht "Datei gestartet!" erschien. Die Datei war auch vorhanden, so wie es muss. Inkl. PID, usw.
Als ichs dann nochmal gemacht hab, war die Datei beendet.

Wenn ich aber von Hand den Befehl "/bin/sh /mod/etc/init.d/rc.xxx start" eingebe, kriege ich das selbe Log (echo Befehle aus der rc.xxx) aber das Programm läuft weiter.

Das Programm Loggt in den Syslog, ja. Wie erhöhe ich den Loglevel?


[Edit]

Offenbar hat das Skript Probleme mit Pfaden...? Normalerweise werden beim Start noch Dateien eingebunden, diese werden aber durch das Starten via "Dienste" nicht geladen. Woran kann das liegen? Alles absolute Pfade, kann also "eigentlich" nichts schief gehen.
Die absoluten Pfade beziehen sich allerdings auf eine chroot Umgebung...

Aber unter "Dienste" wird das Skript nicht anders aufgerufen, als wenn ich das manuell mache, oder?!
Vorallem weil die Parameter, etc. die ich gebe, genau die selben sind!!! Ich führe das Skript von Hand GENAU so aus, wie das der Button unter Dienste tut... Sehr seltsam.
 
Zuletzt bearbeitet:
wenn ich via "Dienste" ein Programm über den "Start" Button starte (ist nur bei einem)

Wir wollen vermutlich nicht wissen um welches Programm es sich handelt, da der Thread sonst gelöscht werden muss

Moin,
Das könnt ihr Devs natürlich selbst entscheiden, aber wie ich das sehe, ist das kein freetz-Problem und somit sollte sich doch der Autor des "Programms" darum kümmern, oder ?!
 
Es scheint ja schon ein Freetz Problem zu sein, denn durch das "manuelle" eingeben des Startbefehls, funktioniert es einwandfrei? Also muss ja irgendwo eine Berechtigung fehlen, die Pfade entsprechend einzubinden?

Ich erhoffe mir hier keinen Bugfix von Freetz sondern lediglich Aufklärung bzgl. der Start-Routine aus dem "Dienste"-Bereich.
 
Wenn Dienste über das Webinterface gestartet werden ist das Environment nicht verfügbar. Wenn da also irgendwelche Variablen gesetzt sind, dann musst du die im Skript erneut setzen/einlesen.

MfG Oliver
 
Die Variablen werden am Anfang im Skript gesetzt:

. /mod/etc/conf/foo.cfg

Dort stehen alle nötigen Variablen, die Pfade zum Starten stimmen ja auch.
Das Programm wird in der Chroot Umgebung gestartet, auch das funktioniert ja, sonst würde die Datei ja nicht im "ps" angezeigt werden.
Nur offenbar findet das Programm dann in der Chroot-Umgebung die Files nicht, obwohl der Ordner existiert und sämtliche Mounts stimmen (überprüft mit "mount").

Also irgendwas muss das WebIF anders machen, als die Konsole... :(
 
Du wirst wohl einiges unkenntlich machen müssen ;-) , aber vielleicht wäre der Output hiervon doch interessant?!
Startet das Skript das Programm anders als du es von der Shell machst? Mit "sh -x /etc/init.d/rc.xxx start" bekommst du die Zeile angezeigt.

Bin zwar nicht in der Coding-Materie, aber vielleicht liegst auch an den momentanen "Umbauarbeiten" der ganzen rc.-Skripte und was da sonst noch dazu gehört
 
Nein, es ist kein Problem von Freetz.

Es mag sein, daß etwas anders ist, wenn ein Programm von der Shell ausgeführt wird. Zum Beispiel daß es mit einem Terminal verbunden ist. Oder das chroot.

Von daher kann ich mich nur der Empfehlung anschließen, den Autor des Programms zu fragen oder den Fehler selbst zu suchen.

Und "Wie erhöhe ich den Loglevel" von einem Programm, das ich nicht kenne? Es kommt auf das Programm an.
 
Dass es auf das Programm ankommt, wusste ich nicht.
Ich werde den Autor mal fragen, woran das liegen könnte.

Der Output von sh -x /etc/init.d/rc.xxx start:
Code:
+ DAEMON=foobar
+ tmp_lib=/tmp/lib

+ tmp_ld=/tmp/ld

+ . /mod/etc/conf/foobar.cfg

+ export FOO_DIR=/var/media/ftp/fbox/sharing

+ export CAPTION=foobar.cfg

+ export VAR_CHROOT_DIR=/var/media/ftp/fbox/chroot

+ export VAR_COMCHK=yes

+ export VAR_COMCHK_IF=driver_stuff

+ export VAR_ENABLED=yes

+ export VAR_SOME_FILES_PATH=/var/media/ftp/fbox/sharing

+ export VAR_START_CHROOT=yes

+ export CONFIG_FILE=/var/media/ftp/fbox/sharing/foobar/foobar.cfg

+ export CONFIG_SAVE=echo "New Config saved"

+ export CONFIG_TYPE=text

+ export TEXT_ROWS=17

+ CHROOT_DIR=/var/media/ftp/fbox/chroot

+ start

+ check dir /var/media/ftp/fbox/sharing/foobar
+ [ -d /var/media/ftp/fbox/sharing/foobar ]

+ return 1

+ [ 1 = -1 ]

+ check status

+ pidof foobar
+ [  ]

+ return 0

+ [ 0 = 1 ]

+ [ yes = yes ]

+ start chroot

+ check dir /var/media/ftp/fbox/sharing/foobar
+ [ -d /var/media/ftp/fbox/sharing/foobar ]

+ return 1

+ [ 1 = -1 ]

+ check status

+ pidof foobar
+ [  ]

+ return 0

+ [ 0 = 1 ]

+ check dir /var/media/ftp/fbox/chroot

+ [ -d /var/media/ftp/fbox/chroot ]

+ return 1

+ [ 1 = 0 ]

+ echo Starte foobar...

Starte foobar...

+ echo Chroot Modus entdeckt... Sollte dies ungewollt sein, bitte Haken im WebIF entfernen!

Chroot Modus entdeckt... Sollte dies ungewollt sein, bitte Haken im WebIF entfernen!

+ echo passe Pfade für der foobar.cfg der Chrootumgebung an...

passe Pfade für der foobar.cfg der Chrootumgebung an...

+ cp /var/media/ftp/fbox/sharing/foobar/foobar.cfg /tmp/foobar.cfg.bak

+ sleep 1

+ 

+ sed s#^\b\(.*\):.*\b\(foobar\/.*\)#\1 : /sharing/\2# /tmp/foobar.cfg.bak

+ rm /tmp/foobar.cfg.bak

+ sleep 2

+ echo mounte /dev

mounte /dev

+ mount -o ro /dev /var/media/ftp/fbox/chroot/dev/

+ sleep 1

+ echo mounte /mod

mounte /mod

+ mount /mod /var/media/ftp/fbox/chroot/mod/

+ sleep 1

+ echo mounte /sharing

mounte /sharing

+ mount /var/media/ftp/fbox/sharing /var/media/ftp/fbox/chroot/sharing

+ sleep 1

+ echo mounte proc

mounte proc

+ mount -o ro -t proc proc /var/media/ftp/fbox/chroot/proc/

+ sleep 1

+ cp /etc/default.foobar/rc_foobar.def /var/media/ftp/fbox/chroot/etc/init.d/rc.foobar

+ echo rc.foobar im chroot Umgebung kopiert

rc.foobar im chroot Umgebung kopiert

+ echo Starte foobar in Chroot-Umgebung...

Starte foobar in Chroot-Umgebung...

+ sleep 2

+ chroot /var/media/ftp/fbox/chroot /etc/init.d/rc.foobar start

+ check status

+ pidof foobar
+ [ 2640 ]

+ return 1

+ [ 1 = 1 ]

+ echo foobar gestartet

foobar gestartet

+ return 0
 
Moin eyo,

läuft das Programm weiter, wenn du das Programm von der Shell startest, es in den Hintergrund packst (mit angehängtem " &" oder der Kombination ctrl-z, bg) und dann das Terminal schließt ?
 
Du meinst, wenn ich das Programm aus dem chroot heraus starte, ohne die rc.xxx zu benutzen?
Das Programm landet "automatisch" im Hintergrund. Ich hänge mit dem Startparameter -c einfach die CFG hinten dran und das Programm startet sich und verfrachtet sich in den Hintergrund.

Habe das Terminal jetzt auch zu (bin auf der Arbeit) und es läuft fröhlich weiter.
 
dann muß ich passen; Meine Idee war, das das Programm den Eingabe- oder Ausgabekanal braucht, um zu laufen. Aber dem scheint nicht so zu sein.
Dann doch den Author fragen, ob etwas mehr statusmeldungen ausgegeben werden können.
 
Habe mal das Script in die rc.custom eingetragen...
Auch damit geht es... es geht NUR mit dem Dienste-Start-Button nicht! Also auch nicht wenn ich den Start auf "Automatisch" stelle...
WTF?!
 
Es wird schon was mit dem fehlenden Environment zu tun haben. Probier mal was passiert, wenn du das env am Anfang des Startskripts sourced.

Code:
# include environment
[ -r /var/env.cache ] && . /var/env.cache
Vielleicht versucht das Programm den FBox Typen auszulesen...

MfG Oliver
 
Du meinst ich soll das in die rc.xxx packen? dann mach ich das morgen denn dafür müsste ich das image ja wieder neu erstellen und flashen und ich liege schon im Bett :D
 
Du kannst die Dateien im Flash mit einem Trick bis zum nächsten Reboot überschreiben. Sehr hilfreich für solche Versuche...
Code:
cp /etc/init.d/rc.foo ~/
mount -o bind ~/rc.foo /etc/init.d/rc.foo
vi ~/rc.foo
MfG Oliver
 
Ok, das war es leider auch nicht. :(

Kann's doch nicht sein x_O
Wieso geht es denn in der rc.custom xD

Sehr seltsam...
 
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.