ho il seguente script bash, si può chiamare script1.sh
:Come verificare se un lavoro in background è vivo? (Bash)
#!/bin/bash
exec ./script2.sh &
sleep 5
if job1 is alive then #<--- this line is pseudo-code!
exec ./script3.sh &
wait
fi
Come si può vedere, lo script viene eseguito script2.sh
come processo in background e quindi attende 5 secondi (in modo script2.sh
può fare un po 'di inizializzazione cose). Se l'inizializzazione ha esito positivo, il lavoro script2.sh
sarà ancora attivo, nel qual caso voglio anche avviare script3.sh
contemporaneamente; se no, voglio solo smettere.
Tuttavia, non so come controllare se il primo lavoro è attivo, quindi la riga di pseudo-codice. Quindi, cosa dovrebbe andare al suo posto?
L'esecuzione di exec non farà ciò che si pensa. Sostituirà il processo corrente con un nuovo processo; le linee successive nel tuo script non saranno raggiunte. –