I cookie permettono il funzionamento di alcuni servizi di questo sito. Utilizzando questi servizi, accetti l'utilizzo dei cookie da parte nostra. [ Leggi dettagli ]

Link sponsorizzati

Valutazione attuale: 4 / 5

Stella attivaStella attivaStella attivaStella attivaStella inattiva
 

L'esecuzione in background (dall'inglese background che indica sfondo o in secondo piano) è una modalità di esecuzione tipica di alcuni programmi che non richiedono la presenza o l'intervento dell'utente, e che può essere concorrente all'esecuzione di altri programmi risultando così ignari all'utente. I processi in background non sono visibili sullo schermo. Ad esempio Apache httpd server viene eseguito in background per servire le pagine web. Puoi mettere in background il tuo script o qualsiasi comando.

Comando Top Linux


I software che lavorano in background fanno tipicamente operazioni lunghe o laboriose, ad esempio programmi di filesharing, peer to peer o che effettuano la deframmentazione dei file system. Anche molti processi dei sistemi operativi girano in background. Nei sistemi operativi Microsoft Windows i programmi in tale modalità (possono essere antivirus che scansionano il sistema o fanno l'aggiornamento) spesso collocano un'icona nella system tray (l'area del desktop accanto all'orologio di sistema) per segnalare la loro attività, e adottano comportamenti che riducono l'utilizzo di risorse in modo da non interferire con le attività interattive dell'utente, ad esempio rallentandolo o causandogli interruzioni. Nei sistemi Unix e Unix-like i processi che girano in background vengono detti demoni e l'uso di un task manager consente di conoscere tutti i programmi in esecuzione compresi quelli in background.


Sintassi

Si può mettere un'operazione (come un comando o uno script) in background aggiungendo un ampersand o e commerciale (&) alla fine del comando. L'operatore & esegue il comando in background e libera il tuo terminale. Il comando che viene eseguito in background si chiama job. È possibile digitare un'altro comando mentre il comando in background è in esecuzione. La sintassi è:

comando &

nome-script &

/percorso/comando arg1 arg2 &

commando-1 | commando-2 arg1 &

commando-1 | commando-2 -arg1 -arg2 >/percorso/output &


Esempi

Per eseguire il comando in background, digita:

$ ls *.py > output.txt &


Avvia il comando find in background mettendo una '&' alla fine della linea di comando: 

find . -iname "*.mp3" > miaplaylist.txt &


Output esempi:

Comandi background 


Come faccio a vedere i jobs avviati in background?

Digita il seguente comando:

jobs


Ecco l'outputs:

[1]- Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
[2]+ Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &


Dove, [1] e [2] sono gli ID dei jobs.

Per visualizzare gli ID di processo per gli ID job in aggiunta alle informazioni normali aggiungi l'opzione -l:

jobs -l


Ecco il risultato:

[1]- 7307 Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
[2]+ 7324 Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &


Per visualizzare solo gli ID di processo, digita: 

jobs -p


Avrai un risultato simile:

7307
7324


Come faccio a uccidere i jobs in esecuzione in background? 

Utilizza il comando kill per uccidere un processo. La sintassi è:

kill PID

kill -15 PID

kill -9 PID

killall nome-processo

killall -15 nome-processo

killall -9 nome-processo



Come faccio a portare in "primo piano" un processo in esecuzione in background? 

Vediamo come mandare in foreground un processo che sta girando in background. La sintassi è:

%ID-JOB

oppure

fg ID-JOB


In primo luogo, visualizza l'elenco dei jobs in esecuzione con il comando jobs: 

jobs -l


Risultato:

[1]- 7307 Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
[2]+ 7324 Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

 
Per portare l'ID del processo #2 in foreground, digita:

%2

oppure usa il comando fg

fg 2


Output:

grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt


Per inviare di nuovo questo job in background premi la combinazione di tasti CTRL+Z cioè tenendo premuto il tasto CTRL, premi il tasto z. Ciò sospende il job in foreground corrente. Digita il seguente comando per inviare di nuovo il job in background: 

%2 &

oppure usa il comando bg

bg


Il job del comando grep è adesso avviato in background. 


Sintesi di tutti i comandi utili

Descrizione Comando
Per vedere quali jobs sono ancora in esecuzione jobs
jobs -l
ps aux
Per mettere un comando/script in background comando &
/percorso/comando &
/percorso/script arg1 &
Per portare un processo da background in foreground fg n
%n
Per inviare un job in background senza cancellarlo bg n
%n &


Ricorda: n == id job (usa il comando jobs per vedere l'id del job).

Ho scritto e condiviso questo articolo su WORCOM, fallo anche tu. Invia ora un nuovo articolo!
Autore: Antonio Liggieri
Esperto di computer e in sicurezza informatica, webmaster, webdesigner, webdeveloper e webmarketer. Sono il fondatore di WORCOM. Amo l'informatica, le arti marziali e il bodybuilding.


Ho anche scritto:

Link sponsorizzati