Musíte uložit PID procesu na pozadí v době, kdy jej spouštíte:
foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID
Nemůžete použít řízení úloh, protože se jedná o interaktivní funkci a je spojeno s ovládacím terminálem. Skript nemusí mít nezbytně připojený terminál, takže řízení úlohy nemusí být nutně dostupné.
Můžete použít jobs -l
příkaz pro přechod na konkrétní úlohuL
^Z
[1]+ Stopped guard
my_mac:workspace r$ jobs -l
[1]+ 46841 Suspended: 18 guard
V tomto případě je 46841 PID.
Od help jobs
:
-l Nahlásit ID skupiny procesů a pracovní adresář úloh.
jobs -p
je další možnost, která zobrazuje pouze PID.
$$
je pid aktuálního skriptu$!
je pid posledního procesu na pozadí
Zde je ukázkový přepis z relace bash (%1
odkazuje na pořadové číslo procesu na pozadí, jak je vidět z jobs
):
$ echo $$
3748
$ sleep 100 &
[1] 192
$ echo $!
192
$ kill %1
[1]+ Terminated sleep 100