1 votos

Ayuda a la espera mientras se ejecuta un proceso

Estoy buscando un bash script que compruebe si el proceso del Instalador se está ejecutando y espere/pause si es así y luego proceda 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

1voto

Tomé tu script y cambié

  • Se ha cambiado la asignación del PID a pgrep
  • Cambiado -o s= a -o stat= para ps
  • Se ha eliminado lo 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 se meta en Z ombie state podría confiar en el hecho de que ps sale con 1 si no se encuentra ningún proceso, y simplifica significativamente la condición del bucle.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X