Come eseguire un programma in background su Linux
Per eseguire un processo in background, quando lo lancio in esecuzione aggiungo il simbolo & alla fine del nome del comando o programma.
[nome programma]&
In questo modo l'esecuzione del processo viene portata a termine dal sistema operativo, senza occupare lo schermo o la linea comandi.
Qual è la differenza tra foreground e background?
Foreground e background sono due metodi alternativi per eseguire un programma.
- In foreground l'esecuzione del processo blocca il terminale fino alla fine del programma. Poi il sistema operativo torna sul prompt.
- In background il terminale non resta occupato durante l'esecuzione, perché il programma gira in secondo piano ossia sullo sfondo ( background ). Il prompt è immediatamente disponibile.
Quindi, è meglio usare il background se il tempo di elaborazione è molto lungo.
Così facendo posso far girare in multitasking più processi contemporaneamente.
Un esempio pratico
Voglio lanciare il programma primo.sh in batch ossia in background.
Apro il terminale e digito
./primo.sh&
Ho aggiunto il suffisso & dopo il nome del programma.
Quindi, il sistema operativo esegue il programma primo.sh in background.
Nella riga successiva Linux mostra il numero di job tra parentesi quadre e il numero di PID del processo.
Qual è la differenza tra job e pid? Il numero di job si distingue dal pid. Il numero di job identifica il processo tra gli altri eseguiti in background. Il pid invece identifica il processo da tutti gli altri processi in esecuzione sul sistema operativo.
Subito dopo riappare il prompt della linea comandi.
A questo punto posso digitare altri comandi mentre l'esecuzione del programma primo.sh continua sullo sfondo.
Come visualizzare i processi in background
Per vedere quali programmi stanno lavorando in background sul sistema utilizzo il comando jobs.
jobs
Il comando mostra l'elenco dei processi in background della sessione.
Il numero tra parentesi quadre è il numero del job assegnato al processo.
Nota. Il numero di jop Identifica il processo in modo univoco e lo distingue dagli altri processi in background.
Come spostare un programma da background a foreground
Per portare in primo piano un programma in background, utilizzo il comando fg ( foreground ) seguito dal numero del job.
fg [%numero job]
E' molto importante anteporre il simbolo % al numero del job.
Il comando fg sposta l'esecuzione del processo dal background al foreground ( linea comandi ).
Un esempio pratico
Per portare in foreground il job [3] digito:
fg %3
Il sistema operativo trova il processo e continua l'esecuzione in primo piano (foreground) sul terminale.
Quando si riporta in primo piano un processo, il terminale si blocca fino al termine dell'esecuzione del programma. Non può essere usato per altri comandi.
Come terminare un programma in background
Per cancellare un programma in background utilizzo il comando kill seguito dal numero del job.
kill [%numero job]
Anche in questo caso bisogna anteporre il simbolo % al numero del jobs.
Il comando kill termina il processo indicato.
Un esempio pratico
Per terminare il job [2] digito
kill %2
Il comando termina immediatamente l'esecuzione in background del processo [2].
A questo punto, voglio verificare se il programma è stato effettivamente terminato.
Digito jobs sulla linea comandi e do invio.
Ora lo status del processo [2] è su "terminato".
Il processo è stato killato.