Como saber se uma tarefa em segundo plano está concluída?

5

Eu invoco um script (do_something) no background via outro script (do_manythings) como abaixo.

nohup do_something &

Como eu saberia no script pai (do_manythings) que a tarefa invocada (do_something) foi feita?

    
por San 21.03.2013 / 15:35

2 respostas

7

Se você quiser enviar um trabalho em segundo plano, fazer outras coisas, parar e aguardar a conclusão do trabalho em segundo plano, faça

nohup do_something &
pid=$!
...more stuff...
wait $pid

Como alternativa, você pode testar se o trabalho foi encerrado assim:

nohup do_something &
pid=$!
...more stuff...
ps -p $pid > /dev/null
[ $? == 1 ] && echo "it's gone, buddy!"
    
por 21.03.2013 / 16:46
0

Você também pode procurar start-stop-daemon (exemplos em /etc/init.d/ ) se quiser usar do_something como um daemon.

    
por 21.03.2013 / 21:56