Sie müssen die PID des Hintergrundprozesses speichern, wenn Sie ihn starten:
foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID
Sie können die Jobsteuerung nicht verwenden, da dies eine interaktive Funktion ist und an ein steuerndes Terminal gebunden ist. Ein Skript muss nicht unbedingt mit einem Terminal verbunden sein, daher ist die Jobsteuerung nicht unbedingt verfügbar.
Sie können den jobs -l
verwenden Befehl, um zu einem bestimmten Job zu gelangenL
^Z
[1]+ Stopped guard
my_mac:workspace r$ jobs -l
[1]+ 46841 Suspended: 18 guard
In diesem Fall ist 46841 die PID.
Ab help jobs
:
-l Gibt die Prozessgruppen-ID und das Arbeitsverzeichnis der Jobs aus.
jobs -p
ist eine weitere Option, die nur die PIDs anzeigt.
$$
ist die PID des aktuellen Skripts$!
ist die PID des letzten Hintergrundprozesses
Hier ist ein Beispielprotokoll einer Bash-Sitzung (%1
bezieht sich auf die Ordnungszahl des Hintergrundprozesses, gesehen von jobs
):
$ echo $$
3748
$ sleep 100 &
[1] 192
$ echo $!
192
$ kill %1
[1]+ Terminated sleep 100