Invia un processo a background Linux

Invia un processo a background Linux
Quando lavoriamo con ambienti desktop grafici, raramente ci preoccupiamo dei processi di fondo. Se abbiamo un processo in primo piano, possiamo generare rapidamente un'altra finestra terminale e continuare con il nostro lavoro.

Tuttavia, se ti trovi in ​​un guscio di terminale grezzo come SSH, ti sentirai spesso preoccupato per i processi che occupano e bloccano il guscio fino a quando non saranno completati, specialmente per lavori di lunga durata. È qui che entra in gioco il concetto di background e processi in primo piano.

Questo tutorial discuterà di quali sono i processi di background e in primo piano, inclusa la creazione e la gestione di Linux.

Cos'è un processo?

Consentitemi di iniziare a livello base: cos'è un processo?

In Linux, un processo è un'istanza di un programma. In genere, questo significa che qualsiasi comando o eseguibile in una shell è un processo.

Esistono principalmente due tipi di processi:

  • Processi in primo piano
  • Processi di fondo

I processi in primo piano sono principalmente applicazioni tipiche che lanciamo e interagiamo con loro. Un esempio sarebbe il file manager Nautilus in Gnome. Nella maggior parte dei casi, possiamo iniziare i processi in primo piano dal guscio o dall'ambiente desktop.

D'altra parte, i processi di sfondo vengono eseguiti in background e non richiedono alcun input o interazione da parte dell'utente. Un esempio sarebbe un tipico demone Linux.

Come eseguire un processo in background

Supponiamo di avere un processo che, durante l'esecuzione, occupa la sessione di shell e ci impedisce di eseguire i comandi fino a quando non esce.

Ad esempio, se eseguiamo il browser Firefox nella shell, occuperà la sessione fino alla terminazione del processo.

$ Firefox


Come puoi vedere, fintanto che Firefox è in esecuzione, il prompt della shell non è disponibile e non possiamo eseguire più comandi.

Per risolvere questo problema, possiamo farlo in due modi:

1: Utilizzo di un AMPERSAND (&)

Il primo metodo è l'uso di AmperSand & Sign. Questo dice alla shell di eseguire qualsiasi comando precede l'ampa e lo sfondo.

Un esempio:

Firefox &

In tale scenario, il processo esegue in background e si genera come nuovo prompt di shell che ci consente di continuare a eseguire i comandi.

Dà anche due identificatori numerici. Il primo racchiuso tra parentesi quadrate è l'ID lavoro, mentre il prossimo è l'ID di processo.

2: Utilizzo del comando CTRL + Z, BG.

Il metodo successivo che puoi utilizzare per mettere un processo in background è utilizzare la scorciatoia CTRL + Z. Questo impedisce al processo di bloccare il guscio. È quindi possibile utilizzare il comando BG per spingerlo sullo sfondo.

Ad esempio, inizia lanciando Firefox come:

$ Firefox

Mentre il processo è in esecuzione, premere Ctrl + Z. Questo restituisce il prompt della shell. Infine, immettere il comando BG per spingere il processo in background.

Come mostrare i processi di fondo

Per visualizzare e gestire i processi in background, utilizzare il comando Jobs nella shell. Ciò mostrerà i lavori in background nell'attuale sessione del terminale.

Per esempio:

$ posti di lavoro

Un esempio di esempio di lavori di fondo:

Per portare un processo in esecuzione in background in primo piano, utilizzare il comando FG seguito dall'ID del lavoro.

Ad esempio, per portare il lavoro Firefox in primo piano, usiamo il comando:

$ fg %1

Per rimettere in background, premere Ctrl + Z seguito dal comando BG.

Come rendere un processo persistente dopo la muore di shell

Quando si esegue i processi in background e la sessione di shell muore, tutti i processi associati a esso terminano, il che può essere problematico, soprattutto se si tratta di una sessione SSH.

Tuttavia, questo non è un problema troppo grande se si utilizza un multiplexer terminale come TMUX o schermo perché, in tal caso, è possibile semplicemente ricollegare la sessione.

Tuttavia, se si esegue una sessione di shell senza un multiplexer, è possibile utilizzare il comando Nohup.

Il comando Nohup è immune ai riassunti e può ignorare il segnale di sospirazione inviato a un processo.

Quindi, se si esegue un comando con Nohup, continua a funzionare anche se la sessione di shell muore accidentalmente.

Ad esempio, per eseguire Firefox con Nohup, usa il comando:

Nohup Firefox &

Ciò eseguirà il processo in background mentre persiste a una shell termina.

È possibile eseguire una nuova sessione di terminale e visualizzare i lavori di fondo. Vedrai il processo ancora in esecuzione in background.

Conclusione

In questo tutorial, abbiamo discusso di vari modi per eseguire e inviare processi in background in Linux. Abbiamo anche coperto come portare un processo di fondo sullo sfondo e persistere al contrario alla terminazione della shell.