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.

il numero di job e di pid del processo

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.

la visualizzazione dei processi in batch su Linux

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.

un esempio di spostamento da background a foreground

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.

verifico se il programma è stato terminato

Ora lo status del processo [2] è su "terminato".

Il processo è stato killato.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

I processi su Linux