GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire un comando al termine di uno già in esecuzione esistente?

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

Linux
  1. Come eseguire un comando memorizzato in una variabile?

  2. Come integrare il comando Mv dopo il comando Trova?

  3. Come eseguire un comando su un contenitore Docker in esecuzione

  4. Come fare in modo che un programma continui a essere eseguito dopo essersi disconnesso da ssh?

  5. Come verificare se ssh-agent è già in esecuzione in bash?

Come eseguire il comando Sudo senza password

Come eseguire i comandi Linux in background

[Suggerimenti Bash] Come fare cd e ls in un comando

[Suggerimenti Bash] Come cp o mv e cd in un comando

Come eseguire periodicamente un comando in Linux usando Watch

Come eseguire più comandi Linux in un unico comando