Hintergrundprozess laesst sich nicht beenden

10/03/2009 - 17:17 von Martin Klaiber | Report spam
Ich starte in einem script mehrere Hintergrundprozesse. Einen kann ich
nicht beenden, da ich nicht weiß, wie ich an seine PID komme.

Zur Veranschaulichung folgendes Mini-Beispiel:

#!/bin/sh

TMP=/tmp

echo "" > $TMP/msgfile
tail -f $TMP/msgfile | mpg123 -R > $TMP/player &
pid_tail=$!
echo "pid_tail: $pid_tail"
ps
kill $pid_tail

ps vor dem Aufruf des scripts:

PID TTY TIME CMD
2774 tty5 00:00:00 bash
3239 tty5 00:00:00 ps

Die Ausgabe des scripts:

pid_tail: 3242
PID TTY TIME CMD
2774 tty5 00:00:00 bash
3240 tty5 00:00:00 pid_test.sh
3241 tty5 00:00:00 tail
3242 tty5 00:00:00 mpg123
3243 tty5 00:00:00 ps

ps nach dem Aufruf des scripts:

PID TTY TIME CMD
2774 tty5 00:00:00 bash
3241 tty5 00:00:00 tail
3244 tty5 00:00:00 ps

Wie man sieht, wurde "tail -f" nicht beendet, weil $! die PID von mpg123
erhielt. Weiß jemand, wie ich an die PID von tail komme?

Danke,
Martin
 

Lesen sie die antworten

#1 Florian Loeber
10/03/2009 - 17:57 | Warnen spam
Wie man sieht, wurde "tail -f" nicht beendet, weil $! die PID von mpg123
erhielt. Weiß jemand, wie ich an die PID von tail komme?



Hi,

probier es mal mit !:0
Mit $! kommst du nur an das letzte Argument, mit !:0 hingegen an
'tail', mit !:1 an '-f' usw.

Ich hoffe, ich konnte dir weiterhelfen.

Grüße,
Florian

Ähnliche fragen