Como monitorar o pid de cada comando no shell script?

Como monitorar o pid de cada comando no shell script?

Na minha situação, tenho um script de shell executando rsync e tar em segundo plano. O Rsync é usado para transferir arquivos e o tar faz a compactação após a conclusão do rsync. Meu problema é como monitorar o pid do rsync e dizer ao comando tar para iniciar quando o pid do rsync não existir mais.

O script de shell pode ficar assim:

rsync data.log B/ &
tar data.tar.gz B/data.log &

Responder1

é muito fácil: você precisa armazenar a variável pid com:

PID_1=$!

Para verificar se o progresso ainda está em execução, basta prosseguir com kill -0 como:

while True:
     if [ 'kill -0 $PID_1' -eq 0 ]; then
         echo Process still running
     else
         echo process done

(Se o código não funcionar corretamente - sinto muito. Estive escrevendo na cama :-))

Para explicação: 'kill -0 $PID_1' retorna 0 ou obviamente 1. Se for 0 o processo está em execução e se for um o processo está concluído. Você pode verificar o código de retorno com 'echo $?'.

Eu espero que isso ajude.

informação relacionada