¿Cómo puedo iniciar un proceso en segundo plano y verificar cuándo termina dentro de un script bash? Mi idea es un guión como este:
launch backgroundprocess &
while [ Process is running ];do
echo "PROCESS IS RUNNING\r"
done;
echo "PROCESS TERMINATED"

cmd1 & p=$!; cmd2 & q=$!; while sleep 1; do echo still running ; done& wait $p $q; kill $!;Con
waitusted puede tener la granularidad que necesita:fuente
Aquí hay una forma de hacerlo:
fuente
waites más adecuado para eso?Puede ejecutar su proceso con nohup y escribir un script de shell para leer el archivo nohup.out que nohup usa para iniciar sesión.
fuente
nohupno escribe nadanohup.out; simplemente crea el archivo y redirige la salida del comando hacia él. (2) Si el comando no produce ningún resultado, no se escribirá nadanohup.out, y esta idea no va a ninguna parte rápidamente. (3) Incluso sicommandescribe salida, ¿cómo puede saber cuándo termina monitoreando esa salida?lsofpara ver sinohuptodavía está usandonohup.out, pero estoy de acuerdo en que este es un método muy complicado.commandcomienza a correr,nohupse ha ido. (1) Sí, estoy repitiendo un número, porque estoy repitiendo lo que dije hace dos años:nohupno escribe nadanohup.out. (5) Sí, podría escribir un script de shell para ejecutar y ejecutarlsofpara ver sinohup.outtodavía está abierto. Pero esa sería una respuesta diferente. (6) Incluso si hicieras eso, no sería confiable. ¿Qué pasa si algún otro proceso abre elnohup.outarchivo? Realmente querrás comprobar si este proceso específico se habíanohup.outabierto. (7) Pero, si vas a hacer eso, ¿por qué no solo verificas si el proceso se está ejecutando?