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.