Archiv verlassen und diese Seite im Standarddesign anzeigen : Script zweimal in Prozessliste - warum!?
Hallo allerseits,
ich habe mir ein kleines Shell-Script geschrieben ("test.sh") und rufe das mit
/usr/local/bin/test.sh <parameter1> <parameter2> &auf.
In der Prozessliste taucht dieses Skript dann aber zweimal (mit unterschiedlichen PID's) auf.
9650 pts/2 S 0:00 /bin/sh /usr/local/bin/test.sh /mnt/test.log /usr/local/bin/test_words.cfg
9652 pts/2 S 0:00 /bin/sh /usr/local/bin/test.sh /mnt/test.log /usr/local/bin/test_words.cfg
Woran kann das liegen?
Chris
Hallo,
das wird ein Child Prozess sein, den dein Script (bzw. die Aufrufe in deinem Script) gestartet hat. Genauer kannst du das mit ps -ef sehen. PPID bedeutet Parent Process ID, und dieser Prozess hat eben den zweiten gestartet.
hmmm........
ich hab jetzt soweit rausfinden können, wie dieser Child-Prozess entsteht.
In meinem Script gab es nämlich den Aufruf
tail -f -n 1 $inputfile | \
welcher durch das "\" den zweiten Prozess gestartet hat.
Ich hab das Skript ein wenig geändert - nun ist der zweite Prozess schon mal nicht mehr vorhanden in der Prozessliste.
Danke Dir für den Tip!
Jetzt hab ich aber - durch den "tail" Befehl einen entsprechenden Prozess laufen, was ja soweit auch logisch ist.
Wie kann ich den beenden, sobald sich auch der zugehörige "Vater"-Prozess (also das Skript selber) beendet hat?
Momentan läuft das "tail" munter weiter und ich habe nichts gefunden, wie man einen Prozess zzgl. aller gestarteten Child-Prozesse beenden kann.
Oder bin ich einfach nur etwas "blond" heute? ;)
Hast Du da vielleicht noch nen Tip für mich?
Danke...
Chris
hmmm........
ich hab jetzt soweit rausfinden können, wie dieser Child-Prozess entsteht.
In meinem Script gab es nämlich den Aufruf
tail -f -n 1 $inputfile | \
welcher durch das "\" den zweiten Prozess gestartet hat.
Ich hab das Skript ein wenig geändert - nun ist der zweite Prozess schon mal nicht mehr vorhanden in der Prozessliste.
Danke Dir für den Tip!
Jetzt hab ich aber - durch den "tail" Befehl einen entsprechenden Prozess laufen, was ja soweit auch logisch ist.
Wie kann ich den beenden, sobald sich auch der zugehörige "Vater"-Prozess (also das Skript selber) beendet hat?
Momentan läuft das "tail" munter weiter und ich habe nichts gefunden, wie man einen Prozess zzgl. aller gestarteten Child-Prozesse beenden kann.
Oder bin ich einfach nur etwas "blond" heute? ;)
Hast Du da vielleicht noch nen Tip für mich?
wenn du im script "exec" for das tail schreibst dann wird das script durch den tail prozess ersetzt - vielleicht reicht Dir das.
ansonsten toetet z.B
/sbin/killproc -G /path/to/script
auch alle Kinder.
Wenn Du es komfortabler willst musst Du Deinem script beibringen was es beim kill tun soll - Stichwort "signal handling"
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.