Esecuzione in background

Lancio di un processo in background

Si può eseguire in background un processo aggiungendo il carattere & alla fine della stringa di comando:

sleep 10 &

Se il comando è lanciato dalla shell riapparirà il prompt, se invece è lanciato da uno script verrà eseguito il comando successivo dello script. Se si vuole imporre allo script di attendere la terminazione dei lanci in background (processi figli) si userà il comando wait:

comando1 &
comando2 &
wait

Spostare in background l’esecuzione di un processo

dopo aver lanciato un comando da terminale premere CTRL-Z

sleep 10
^Z
[1] + Stopped (SIGTSTP)        sleep 10

Il processo è ancora running ma fermo e il prompt è disponibile

ps -ef | grep sleep
   xuser 19578 27951   0 10:10:10 pts/4       0:00 sleep 10
   xuser 19583 27951   0 10:10:19 pts/4       0:00 grep sleep

Faccio procedere l’esecuzione in background:

bg 19578
[1]     sleep 10&

Il prompt ritorna disponibile ancora e al termine dell’esecuzione in background compare il messaggio:

[1] +  Done                    sleep 10