In genere quando si esegue un comando nel terminale, è necessario attendere fino al termine del comando prima di poterne inserire un altro. Questo è chiamato esecuzione del comando in primo piano o processo in primo piano. Quando un processo viene eseguito in primo piano, occupa la shell e puoi interagire con esso utilizzando i dispositivi di input.

Che cosa succede se il comando richiede molto tempo per finire, e si desidera eseguire altri comandi nel frattempo? Hai diverse opzioni a tua disposizione., L’opzione più ovvia e semplice è avviare una nuova sessione di shell ed eseguire il comando al suo interno. Un’altra opzione è eseguire il comando in background.

Un processo in background è un processo / comando che viene avviato da un terminale e viene eseguito in background, senza interazione da parte dell’utente.

In questo articolo, parleremo dei processi in background è Linux. Ti mostreremo come avviare un comando in background e come mantenere il processo in esecuzione dopo che la sessione della shell è stata chiusa.,

Eseguire un Comando Linux sullo Sfondo #

Per eseguire un comando in background, aggiungere il simbolo di e commerciale (&) alla fine del comando:

command &

La shell ID di processo (racchiuso tra parentesi quadre) e ID di processo verrà stampata sul terminale:

 25177

È possibile avere più processi in esecuzione in background, allo stesso tempo.

Il processo in background continuerà a scrivere messaggi sul terminale da cui è stato richiamato il comando., To suppress the stdout and stderr messages use the following syntax:

command > /dev/null 2>&1 & 

>/dev/null 2>&1 means redirect stdout to /dev/null and stderr to stdout .,/div>

portare un processo in background in primo piano, utilizzare il tag fg comando:

fg

Se si dispone di più processi in background, include % e l’ID del lavoro dopo il comando:

fg %1

Per terminare il processo in background, utilizzare il tag kill comando seguito da l’ID di processo:

kill -9 25177

Spostare il Processo in primo Piano a Sfondo #

spostare l’esecuzione di un processo in primo piano sullo sfondo:

  1. Interrompere il processo digitando Ctrl+Z.,
  2. Sposta il processo arrestato in background digitandobg.

Mantieni i processi in background in esecuzione dopo l’uscita di una Shell #

Se la connessione viene interrotta o si esce dalla sessione della shell, i processi in background vengono terminati. Esistono diversi modi per mantenere il processo in esecuzione dopo la fine della sessione della shell interattiva.,

Un modo è quello di rimuovere il processo dalla shell di controllo di processo utilizzando il disown shell:

disown

Se si dispone di più di un job in background, include % e l’ID del lavoro dopo il comando:

disown %1

Confermare che il lavoro viene rimosso dalla tabella dei lavori attivi, utilizzando i tag jobs -l comando. Per elencare tutti i processi in esecuzione, incluso il disowned, utilizzare il comandops aux.,

Un altro modo per mantenere un processo in esecuzione dopo l’uscita della shell è usare nohup.

Il comando nohup esegue un altro programma specificato come argomento e ignora tutti i segnali SIGHUP (hangup). SIGHUP è un segnale che viene inviato a un processo quando il suo terminale di controllo è chiuso.

Per eseguire un comando in background utilizzando il comando nohup, digitare:

nohup command &

L’output del comando viene reindirizzato al file nohup.out.,

nohup: ignoring input and appending output to 'nohup.out'

Se si disconnette o si chiude il terminale, il processo non viene terminato.

Alternative #

Esistono numerosi programmi che consentono di avere più sessioni interattive contemporaneamente.

Screen #

Screen o GNU Screen è un programma multiplexer terminale che permette di avviare una sessione di schermo e aprire qualsiasi numero di finestre (terminali virtuali) all’interno di quella sessione. I processi in esecuzione nella schermata continueranno a funzionare quando la loro finestra non è visibile anche se ti disconnetti.,

Tmux #

Tmux è un’alternativa moderna allo schermo GNU. Con Tmux, è anche possibile creare una sessione e aprire più finestre all’interno di quella sessione. Le sessioni Tmux sono persistenti, il che significa che i programmi in esecuzione in Tmux continuano a funzionare anche se si chiude il terminale.

Conclusione #

Per eseguire un comando in background, includere& alla fine del comando.

Quando si esegue un comando in background, non è necessario attendere fino al termine prima di poter eseguire un altro.

Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *