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.out
viene utilizzato come file predefinito per stdout e stderr.