Ayuda para esperar mientras se ejecuta un proceso

1

Estoy buscando un script de bash que compruebe si el proceso del instalador se está ejecutando y espera / pausa si luego continúa una vez que el proceso ya no se está ejecutando.

Esto es lo que tengo hasta ahora:

 #!/bin/bash
 PROCESS="Installer";
 PID=$(ps -A |grep -m1 "$PROCESS" | awk '{print $1}');
 while s='ps -p $PID -o s=' && [[ "$s" && "$s" !='Z'  ]]; do
     echo "$PROCESS is Running, waiting for it to close"
     sleep 1
 done
 echo "$PROCESS is not Running";
 SCRIPT HERE
    
pregunta Webster Master 04.05.2018 - 17:03

1 respuesta

1

Tomé tu guión y lo cambié

  • Se cambió la asignación de PID a pgrep
  • Se modificó -o s= a -o stat= para ps
  • Se eliminó el ; innecesario al final de algunas líneas

Es un poco difícil de probar, pero algo como

#!/bin/bash
PROCESS="Installer"
PID=$(pgrep "$PROCESS")
while s='ps -p $PID -o stat=' && [[ "$s" && "$s" != 'Z' ]]; do
    echo "$PROCESS is running, waiting for it to terminate"
    sleep 1
done
echo "$PROCESS is not running anymore"
SCRIPT HERE

debería funcionar.

Si no le preocupa que el Instalador entre en el estado de ombie Z , puede confiar en el hecho de que ps sale de 1 si no se encuentra un proceso, y simplifica significativamente la condición del bucle.

    
respondido por el nohillside 04.05.2018 - 21:11

Lea otras preguntas en las etiquetas