Pubblicato il

shell

processi

linux

mac


come gestire processi nel background con terminale Linux e mac con comandi fg bg

Ciao a tutti e benvenuti in questa guida dove vedremo come eseguire un processo in background usando il Terminale Linux o Mac.

Se abbiamo la fortuna di lavorare con un’interfaccia grafica, solitamente non avremo il bisogno di eseguire processi in background, dato che possiamo semplicemente aprire una nuova finestra del Terminale ed eseguire un nuovo processo. La necessità di eseguire un processo in background viene sentita di più quando si sta lavorando da remoto, per esempio tramite una connessione SSH

Quando abbiamo a disposizione una sola finestra del Terminale e stiamo eseguendo un programma o processo molto lungo, dobbiamo aspettare fino alla fine dell’esecuzione del processo per poter continuare ad utilizzare il Terminale. Fortunatamente esiste un metodo per “spostare” questi processi in background

In questa guida andremo a vedere come utilizzare comandi come bg, fg, jobs e & per eseguire e gestire vari processi in background.

Per vedere un esempio possiamo considerare uno dei comandi più utilizzati: ping

Se proviamo ad eseguire il comando: ping localhost 2>&1 >/dev/null (2>&1 >/dev/null server per ignorare l’output del ping) nel nostro Terminale, possiamo vedere che il comando prende controllo del Terminale e non ci permette di eseguire altri comandi mentre è in esecuzione. La nostra unica opzione è quella di terminare il ping con Ctrl + C

Come eseguire un processo in background con il comando &

Vediamo ora cosa succede se eseguiamo lo stesso comando, ma questa volta seguito dal carattere &. Questo carattere ci permette di eseguire un processo in background, liberando la console dal processo. Se eseguiamo il comando: 

ping localhost 2>&1 >/dev/null & 


Possiamo vedere che siamo in grado di utilizzare il Terminale senza problemi ed eseguire ulteriori processi allo steso tempo. Inoltre, quando eseguiamo il ping con il comando &, ci viene mostrato tra parentesi quadre un numero come questo:

[1] 13348


Il numero tra parentesi quadre è l’id del job e il numero che segue è l’ID del processo. In questo caso dato che abbiamo eseguito un solo processo in background (job), il ping viene assegnato all’id 1. Se dovessimo eseguire un nuovo processo in background, questo riceverebbe un id di 2.

Come elencare i processi in esecuzione in background

Per vedere una lista dei processi che sono in esecuzione al momento in background, possiamo utilizzare il comando jobs. Questo comando, una volta eseguito ci mostrerà una lista dei vari processo in background, insieme al loro id.

Come ripristinare un processo dal background

Ora che abbiamo il nostro processo in background vediamo come ripristinare questo processo, o in termini più tecnici: come eseguire il processo nel foreground.

Per reseguire il processo nel foreground, possiamo usare il comando fg.

Questo comando accetta come parametro l’id del job che abbiamo visto nella parte precedente. Quando eseguiamo il comando fg, il processo con l’id desiderato viene preso dal background e ripristinato nel foreground, riprendendo controllo della console.

Proviamo a ripristinare il ping che abbiamo eseguito precedentemente.

fg 1


Se vi viene mostrato un messaggio di errore come: fg: job not found: 1 O non avete un processo in background con id=1, o state usando Zsh. In tal caso dovete aggiungere il simbolo % davanti all’id del processo: fg %1

Una volta eseguito il comando fg, possiamo vedere che il ping a ripreso controllo del terminale e sta eseguendo nella sua modalità normale.

Come eseguire un processo in background con il comando bg

Se non abbiamo fatto uso del comando & per eseguire un processo in background, possiamo sempre mandare questo processo in background più tardi. Per esempio se eseguiamo un normale ping nel foreground, possiamo mettere in pausa il ping tramite i tasti Ctrl + Z. Una volta messo in pausa il ping, possiamo utilizzare il comando bg per ripristinare il processo ed inviarlo in background.


Ci siamo ora sapete come gestire processi in background utilizzando i comandi &, fg, bg, e jobs.

Se hai una domanda puoi chiedere qualsiasi cosa nei commenti in basso

Grazie per aver letto questa guida su Devnews.it

Spero ti sia stata utile in qualche modo. Ti prego di supportare questa pagina mettendo mi piace alle nostre pagine social cliccando un basso, dove pubblichiamo regolermente notizie, tutorial e fatti curiosi sull'informatica. Grazie e ci vediamo alla prossima :)