Como obtenho o pid de um processo executado em segundo plano?

1

Estou usando a esta abordagem para executar um processo em segundo plano.

"$@" &>/dev/null &disown

Como obtenho o seguinte -

  1. Obtenha o plano de fundo pid
  2. Devolve-o para poder ser consumido noutro script?
por Nishant 11.02.2017 / 17:03

1 resposta

5

O ID do processo da tarefa em segundo plano iniciada mais recentemente está disponível para o shell como $! .

Você pode, por exemplo, enviá-lo para um arquivo ou para uma saída padrão:

"$@" &>/dev/null &
disown

printf '%d\n' "$!" >background.pid

Outro script pode então

./first-script.sh some command line

thepid=$( <background.pid )

Como alternativa, se o primeiro script emitir apenas o ID do processo para a saída padrão, o segundo script poderá

thepid=$( ./first-script.sh some command line )
    
por 11.02.2017 / 17:09