GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere l'ID processo del processo in background?

Devi salvare il PID del processo in background nel momento in cui lo avvii:

foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID

Non è possibile utilizzare il controllo del lavoro, poiché si tratta di una funzionalità interattiva e legata a un terminale di controllo. Uno script non avrà necessariamente un terminale collegato, quindi il controllo del lavoro non sarà necessariamente disponibile.


Puoi usare il jobs -l comando per raggiungere un particolare jobL

^Z
[1]+  Stopped                 guard

my_mac:workspace r$ jobs -l
[1]+ 46841 Suspended: 18           guard

In questo caso, 46841 è il PID.

Da help jobs :

-l Riporta l'ID del gruppo di processi e la directory di lavoro dei lavori.

jobs -p è un'altra opzione che mostra solo i PID.


  • $$ è il pid dello script corrente
  • $! è il pid dell'ultimo processo in background

Ecco una trascrizione di esempio da una sessione bash (%1 si riferisce al numero ordinale del processo in background visto da jobs ):

$ echo $$
3748

$ sleep 100 &
[1] 192

$ echo $!
192

$ kill %1

[1]+  Terminated              sleep 100

Linux
  1. Come eseguire il processo Rsync in background

  2. Come ottenere l'utilizzo della CPU

  3. Come faccio a far funzionare in background il mio server web Golang?

  4. Come ottenere l'ID del processo per terminare un processo nohup?

  5. Processo Linux in background - Arresto nei lavori?

Come uccidere un processo in Linux

Come ottenere l'utilizzo della CPU di un singolo processo in Linux

Come inviare processi in background su Linux

Come ottenere un valore di ritorno da CHILD PROCESS?

Come ottenere il processo figlio dal processo padre

Come ottenere solo l'ID del processo nello specificare il nome del processo in Linux?