¿Cómo monitorear el pid de cada comando en el script de shell?

¿Cómo monitorear el pid de cada comando en el script de shell?

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.

información relacionada