En mi situación, tengo un script de shell ejecutando rsync y tar en segundo plano. Rsync se usa para transferir archivos y tar realiza la compresión una vez finalizado rsync. Mi problema es cómo monitorear el pid de rsync y le digo al comando tar que se inicie cuando el pid de rsync ya no exista.
El script de shell puede verse así:
rsync data.log B/ &
tar data.tar.gz B/data.log &
Respuesta1
Es bastante fácil: necesitas almacenar la variable pid con:
PID_1=$!
Para verificar la identificación, el progreso aún se está ejecutando, simplemente continúe con kill -0 como:
while True:
if [ 'kill -0 $PID_1' -eq 0 ]; then
echo Process still running
else
echo process done
(Si el código no se ejecuta correctamente, lo siento mucho. He estado escribiendo en la cama :-))
Para explicación: 'kill -0 $PID_1' devuelve 0 u obviamente 1. Si es 0, el proceso se está ejecutando y si es uno, el proceso finaliza. Puede comprobar el código de retorno con 'echo $?'.
Espero que esto ayude.