GNU/Linux >> Linux Esercitazione >  >> Linux

Come avviare il comando Linux in background e scollegare il processo nel terminale

In questa guida metteremo in luce un concetto semplice ma importante nella gestione dei processi in un sistema Linux, ovvero come staccare completamente un processo dal suo terminale di controllo.

Quando un processo è associato a un terminale, potrebbero verificarsi due problemi:

  1. il tuo terminale di controllo è pieno di così tanti dati di output e messaggi di errore/diagnostici.
  2. nel caso in cui il terminale venga chiuso, il processo insieme ai suoi processi figlio verrà interrotto.

Per affrontare questi due problemi, è necessario scollegare completamente un processo da un terminale di controllo. Prima di passare effettivamente alla risoluzione del problema, esaminiamo brevemente come eseguire i processi in background.

Come avviare un processo o un comando Linux in background

Se un processo è già in esecuzione, come l'esempio del comando tar riportato di seguito, premi semplicemente Ctrl+Z per fermarlo, inserisci il comando bg per continuare con la sua esecuzione in background come lavoro.

Puoi visualizzare tutti i tuoi lavori in background digitando jobs . Tuttavia, è stdin , standard , stderr sono ancora collegati al terminale.

$ tar -czf home.tar.gz .
$ bg
$ jobs

Puoi anche eseguire un processo direttamente in background usando la e commerciale, & firmare.

$ tar -czf home.tar.gz . &
$ jobs

Dai un'occhiata all'esempio seguente, sebbene il comando tar sia stato avviato come lavoro in background, al terminale è stato comunque inviato un messaggio di errore, il che significa che il processo è ancora connesso al terminale di controllo.

$ tar -czf home.tar.gz . &
$ jobs

Mantieni i processi Linux in esecuzione dopo l'uscita da Terminal

Useremo rinnego comando, viene utilizzato dopo che il processo a è stato avviato e messo in background, il suo lavoro consiste nel rimuovere un lavoro della shell dall'elenco dei lavori attivi della shell, quindi non utilizzerai fg , bg comandi su quel particolare lavoro.

Inoltre, quando chiudi il terminale di controllo, il lavoro non si bloccherà né invierà un SIGHUP a qualsiasi lavoro per bambini.

Lettura consigliata: 5 modi per mantenere in esecuzione sessioni e processi SSH remoti

Diamo un'occhiata al seguente esempio di utilizzo di disvinto funzione incorporata bash.

$ sudo rsync Templates/* /var/www/html/files/ &
$ jobs
$ disown  -h  %1
$ jobs

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 Templates/* &
$ jobs

Staccare un processo Linux dal terminale di controllo

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 &>/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 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, a condizione che un processo sia collegato a un terminale di controllo, come utente vedrai diverse righe di output dei dati di processo e messaggi di errore sul tuo terminale. Anche in questo caso, quando chiudi il terminale di controllo, il tuo processo e i processi secondari verranno terminati.

È importante sottolineare che per qualsiasi domanda o commento sull'argomento, contattaci utilizzando il modulo di commento qui sotto.


Linux
  1. Che cos'è un comando Chown in Linux e come usarlo

  2. Come gestire i lavori in background di Linux con il comando fg e bg

  3. Come trovare e uccidere il processo Zombie in Linux

  4. Come usare vi per modificare un comando nel terminale su Linux?

  5. Come avviare i programmi Linux GUI dalla riga di comando, ma separati dalla riga di comando?

Come individuare e terminare un processo con il terminale Linux

Come avviare e terminare un processo in Ubuntu 20.04 LTS

Come lavorare con il processo in primo piano e in background in Linux

Come installare e utilizzare il comando locate in Linux

Come KILL un processo su Linux

Come installare e utilizzare il comando fd in Linux