[Frage] Script als losgelösten Prozess starten

sp002154

Neuer User
Mitglied seit
1 Apr 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
An alle Tüftler und Scripting-Freaks!

Ich starte aus der debug.cfg heraus ein autostart-Script. Innerhalb dieses autostart-Scripts rufe ich wiederum ein weiteres Script auf, das in einer Endlosschleife eine IP-Adresse überwacht.

Leider wird das Script aber mit Beendigung des aufrufenden autostart-Scripts ebenfalls beendet. Auch Versuche mit nohup und Start im Hintergrund mit & waren nicht erfolgreich.

Wie schaffe ich es, das Überwachungsscript (watchping) zu starten, ohne das dieses nach Beenden des aufrufenden Scripts (autostart.sh) ebenfalls gestoppt wird?

Auszüge aus den Scripten:

debug.cfg
...
/var/media/.../autostart.sh
...

autostart.sh
...
/../watchping .... &
oder
nohup /.../watchping ... &
...

Vielen Dank.
Gruß, Peter.
 

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,968
Punkte für Reaktionen
26
Punkte
48
Ich starte aus der debug.cfg heraus ein autostart-Script. Innerhalb dieses autostart-Scripts rufe ich wiederum ein weiteres Script auf, das in einer Endlosschleife eine IP-Adresse überwacht.

Leider wird das Script aber mit Beendigung des aufrufenden autostart-Scripts ebenfalls beendet.
Hast Du das watchping-Script, ohne die debug.cfg und ohne das autostart-Script schon getestet?
 

sp002154

Neuer User
Mitglied seit
1 Apr 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Hast Du das watchping-Script, ohne die debug.cfg und ohne das autostart-Script schon getestet?

Das Script läuft wie erwartet, wenn es von der Kommandozeile aus gestartet wird. Auch der "normale" Start ohne nohup oder als Hintergrundprozess funktioniert. In der Prozessliste findet man aber dann sowohl das autostart- als auch das watchping-Script. Ich möchte aber, dass auch nach Beendigung des autostart-Scripts watchping weiter läuft.

Gruß, Peter.
 

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,968
Punkte für Reaktionen
26
Punkte
48

cyberhead

Neuer User
Mitglied seit
27 Jul 2007
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Servus,

ich weiß nicht, ob es Dir hilft, aber ich habe es einmal so gemacht und hatte keine Probleme, auch ohne & am Ende:

# cat /var/flash/debug.cfg

###############################################################################
#debug.cfg
###############################################################################
/bin/busybox telnetd -l /sbin/ar7login

###############################################################################
# Mein BOX-"Betriebssystem" laden....
###############################################################################

#Datei /var/fboot erzeugen....

cat >> /var/fboot << 'BIGEOF'

# ! /bin/sh
###############################################################################
#fboot bash script
###############################################################################

#irgendwelche aufrufe.....z.B.....
###############################################################################
#Erstellen der Datei /var/atmix....
###############################################################################
dst=/var/atmix
echo "FBOOT make $dst ..." >> $log
cat > $dst << 'EOF'

#!/bin/sh
#Abfrage der Daten des AVRNETIO

while [ "1" = "1" ]
do
t=`date '+%d.%m.%Y;%H:%M:%S'`
# echo -n $t
# echo ' get data...'
# break

if [ ! -e /var/a ]
then
echo "DATUM;ZEIT;RAWADC1;RAWADC2;RAWADC3;RAWADC4;" > /var/a
fi

echo -n $t >> /var/a
echo -n ';' >> /var/a

t=`echo GETADC 1 | nc 192.168.100.252 50290`
echo -n $t >> /var/a
echo -n ';' >> /var/a

t=`echo GETADC 2 | nc 192.168.100.252 50290`
echo -n $t >> /var/a
echo -n ';' >> /var/a

t=`echo GETADC 3 | nc 192.168.100.252 50290`
echo -n $t >> /var/a
echo -n ';' >> /var/a

t=`echo GETADC 4 | nc 192.168.100.252 50290`
echo -n $t >> /var/a
echo ';' >> /var/a

# break

let n=60-$(date '+%S')+15
sleep $n
done

EOF

chmod 777 $dst
a=`ps|grep "$dst"|grep "bin/sh"` #; echo $a
if [ -z "$a" ] ; then
echo "FBOOT starting $dst ..." >> $log
$dst &
fi

###############################################################################

BIGEOF

chmod 777 /var/fboot
/var/fboot

###############################################################################
###############################################################################
###############################################################################


Über den Konstrukt cat > datei << 'STOPMARKE' ...script... STOPMARKE erstelle ich überhaupt erst einmal die Skripts in /var und führe am Ende von debug.cfg einfach das /var/fboot aus, was wiederum das /var/atmix erstellt und anstartet und dann endet, ohne das atmix endet. Und das war ja dein Problem, oder?

Wie gesagt, vielleicht bringts Dir was, schöne Weihanchten!
 

chked

IPPF-Promi
Mitglied seit
20 Nov 2006
Beiträge
4,284
Punkte für Reaktionen
19
Punkte
38
Am Anfang der debug.cfg sowie in allen gestarteten Scripten sollte die Zeile
Code:
trap '' SIGHUP
stehen. Die "neueren" Firmwareversionen verlangen dies.
 

chked

IPPF-Promi
Mitglied seit
20 Nov 2006
Beiträge
4,284
Punkte für Reaktionen
19
Punkte
38
Anfang des Codes sowie am Ende...
Bezieht sich das auf meinen Beitrag? Wenn mich nicht alles täuscht, sind diese Tags drin.
Oder meinst du wirklich C0DE (C-null-DE)?
 

KunterBunter

IPPF-Urgestein
Mitglied seit
12 Okt 2005
Beiträge
26,458
Punkte für Reaktionen
612
Punkte
113
Nein, ich meine natürlich den Beitrag über deinem. :)
 

sp002154

Neuer User
Mitglied seit
1 Apr 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
So Leute, jetzt läuft es wie gewünscht! :lol:

Ich habe folgenden Befehl in das watchping-Script eingefügt:
Code:
trap '' 1 2 3 6

und der Aufruf in der autostart-Script sieht so aus:

Code:
/../watchping .... &

Vielen Dank für Eure Hilfe und noch schöne Weihnachten.

Gruß, Peter.
 

Erhalten Sie 3CX für 1 Jahr kostenlos!

Gehostet, in Ihrer privaten Cloud oder on-Premise! Ganz ohne Haken. Geben Sie Ihren Namen und Ihre E-Mail an und los geht´s:

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.
oder via