Quando si esce dalla shell di un sistema Linux, tutti i processi in esecuzione vengono generalmente terminati o riattaccano. Quindi cosa fai se vuoi ancora mantenere i processi in esecuzione anche uscendo dalla shell/terminale? Qui è dove il comando nohup entra.
Comando Nohup
Nohup, abbreviazione di no hang up è un comando nei sistemi Linux che mantiene i processi in esecuzione anche dopo essere usciti dalla shell o dal terminale.
Nohup impedisce ai processi o ai lavori di ricevere il segnale SIGHUP (Signal Hang UP). Questo è un segnale che viene inviato a un processo alla chiusura o all'uscita dal terminale. In questa guida, diamo un'occhiata al comando nohup e dimostriamo come può essere utilizzato.
Sintassi del comando Nohup
La sintassi del comando Nohup è la seguente;
nohup command arguments O
nohup options Vediamo come entra in gioco il comando
Verifica della versione di Nohup
Puoi iniziare controllando la versione di Nohup usando la sintassi qui sotto
nohup --version Risultato

Avvio di un processo utilizzando Nohup
Se vuoi mantenere in esecuzione i tuoi processi/lavori, fai precedere il comando con nohup come mostrato di seguito. I lavori continueranno a essere eseguiti nella shell e non verranno uccisi all'uscita dalla shell o dal terminale.
nohup ./hello.sh Risultato

Dall'output sopra, l'output del comando è stato salvato in nohup.out per verificare questa corsa,
cat nohup.out Risultato

Inoltre, puoi scegliere di reindirizzare l'output a un file diverso come mostrato
nohup ./hello.sh > output.txt Ancora una volta, per visualizzare il file eseguito
cat output.txt Risultato

Per reindirizzare a un file e all'errore standard e all'output, utilizzare > filename 2>&1 attributo come mostrato
nohup ./hello.sh > myoutput.txt >2&1 Risultato

Avvio di un processo in background utilizzando Nohup
Per avviare un processo in background, usa & simbolo alla fine del comando. In questo esempio, eseguiamo il ping di google.com e lo mandiamo in background.
nohup ping google.com & Risultato

Per controllare il processo quando si riprende la shell, utilizzare pgrep comando come mostrato
pgrep -a ping Risultato

Se vuoi interrompere o terminare il processo in esecuzione, usa kill comando seguito dall'ID del processo come mostrato
kill 2565 Risultato

Riepilogo
- Tutti i processi eseguiti utilizzando il comando nohup ignoreranno il segnale SIGHUP anche all'uscita dalla shell.
- Una volta che un lavoro viene avviato o eseguito utilizzando il comando nohup, stdin non sarà disponibile per l'utente.
- Per impostazione predefinita,
nohup.outviene utilizzato come file predefinito per stdout e stderr.