Puoi separare più comandi con ;
, quindi vengono eseguiti in sequenza, ad esempio:
really_long_script.sh ; echo Finished
Se desideri eseguire il programma successivo solo se lo script è terminato con codice di ritorno 0 (che di solito significa che è stato eseguito correttamente), allora:
really_long_script.sh && echo OK
Se vuoi il contrario (cioè continua solo se il comando corrente è fallito), allora:
really_long_script.sh || echo FAILED
Puoi eseguire il tuo script in background (ma attenzione, l'output degli script (stdout
e stderr
) continuerebbe ad andare al tuo terminale a meno che tu non lo reindirizzi da qualche parte), e poi wait
per questo:
really_long_script.sh &
dosomethingelse
wait; echo Finished
Se hai già eseguito lo script, puoi sospenderlo con Ctrl-Z
, e poi esegui qualcosa come:
fg ; echo Finished
Dove fg
porta in primo piano il processo sospeso (bg
lo farebbe funzionare in background, più o meno come se fosse iniziato con &
)
Puoi anche usare il controllo del lavoro di bash. Se hai iniziato
$ really_long_script.sh
quindi premi ctrl+z per sospenderlo:
^Z
[1]+ Stopped really_long_script.sh
$ bg
per riavviare il lavoro in background (proprio come se fosse stato avviato con really_long_script.sh &
). Quindi puoi aspettare questo lavoro in background con
$ wait N && echo "Successfully completed"
dove N è l'ID lavoro (probabilmente 1 se non hai eseguito nessun altro lavoro in background) che viene visualizzato anche come [1]
sopra.
Se il processo non viene eseguito su tty corrente, prova questo:
watch -g ps -opid -p <pid>; mycommand