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:
- Interrompere il processo digitando
Ctrl+Z
., - Sposta il processo arrestato in background digitando
bg
.
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.