Aiuta con l'attesa mentre un processo è in esecuzione

1

Sto cercando uno script bash che controlli se il processo di installazione è in esecuzione e attende / sospendi se procede dopo che il processo non è più in esecuzione.

Ecco quello che ho finora:

 #!/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
    
posta Webster Master 04.05.2018 - 17:03
fonte

1 risposta

1

Ho preso il tuo script e ho cambiato

  • Modificato l'assegnazione PID a pgrep
  • Modificato -o s= in -o stat= per ps
  • Rimosso il ; non necessario alla fine di alcune righe

È un po 'difficile da testare, ma qualcosa di simile

#!/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

dovrebbe funzionare.

Se non sei preoccupato che il programma di installazione entri nello stato di Z puoi fare affidamento sul fatto che ps esce con 1 se non viene trovato alcun processo e semplifica in modo significativo la condizione del ciclo.

    
risposta data 04.05.2018 - 21:11
fonte

Leggi altre domande sui tag