[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.
 
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?
 
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.
 
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!
 
Am Anfang der debug.cfg sowie in allen gestarteten Scripten sollte die Zeile
Code:
trap '' SIGHUP
stehen. Die "neueren" Firmwareversionen verlangen dies.
 
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)?
 
Nein, ich meine natürlich den Beitrag über deinem. :)
 
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.
 
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.