In questa guida, metteremo in luce un concetto semplice ma importante in gestione dei processi in un sistema Linux, ecco come staccare completamente un processo dal suo terminale di controllo.
Quando un processo è associato a un terminale, potrebbero verificarsi due problemi:
Per affrontare questi due problemi, è necessario scollegare completamente un processo da un terminale di controllo. Prima di passare effettivamente alla risoluzione del problema, vediamo brevemente come eseguire i processi in background.
Se un processo è già in esecuzione, come il esempio di comando tar sotto, premi semplicemente Ctrl+Z
per fermarlo, quindi inserisci il comando bg
per continuare con la sua esecuzione in background come lavoro.
Puoi visualizzare tutti i tuoi lavori in background digitando
lavori
. Tuttavia, è standard, stdout, stderr sono ancora collegati al terminale.
$ tar -czf home.tar.gz. $ bg. $ lavori.
Puoi anche eseguire un processo direttamente dallo sfondo usando la e commerciale, &
cartello.
$ tar -czf home.tar.gz. & $ lavori.
Dai un'occhiata all'esempio qui sotto, anche se il comando tar è stato avviato come lavoro in background, è stato ancora inviato un messaggio di errore al terminale, il che significa che il processo è ancora connesso al terminale di controllo.
$ tar -czf home.tar.gz. & $ lavori.
Noi useremo rinnegare comando, viene utilizzato dopo che un processo è stato avviato e messo in background, il suo lavoro è rimuovere un lavoro shell dai lavori dell'elenco attivo della shell, quindi non lo userai fg
, bg
comandi più su quel particolare lavoro.
Inoltre, quando si chiude il terminale di controllo, il lavoro non si bloccherà né invierà a SIGHUP a qualsiasi lavoro minorile.
Lettura consigliata:5 modi per mantenere in esecuzione sessioni e processi SSH remoti
Diamo un'occhiata al seguente esempio di utilizzo rinnegato funzione incorporata bash.
$ sudo rsync Templates/* /var/www/html/files/ & $ lavori. $ disown -h %1. $ lavori.
Puoi anche usare nohup
comando, che consente anche a un processo di continuare a essere eseguito in background quando un utente esce da una shell.
$ nohup tar -czf iso.tar.gz Modelli/* & $ lavori.
Pertanto, per scollegare completamente un processo da un terminale di controllo, utilizzare il formato di comando riportato di seguito, questo è più efficace per l'interfaccia utente grafica (GUI) applicazioni come Firefox:
$ firefox /dev/null &
In Linux, /dev/null è un file di dispositivo speciale che cancella (elimina) tutti i dati scritti su di esso, nel comando precedente, l'input viene letto da e l'output viene inviato a /dev/null.
Lettura consigliata:10 esempi di comandi dello schermo per scollegare le sessioni del terminale
Come osservazione conclusiva, se un processo è collegato a un terminale di controllo, come utente vedrai diverse righe di output dei dati di processo e messaggi di errore sul tuo terminale. Di nuovo, quando chiudi un terminale di controllo, il tuo processo e i processi figlio verranno terminati.
È importante sottolineare che per qualsiasi domanda o commento sull'argomento, contattaci utilizzando il modulo di commento qui sotto.