Nohup
# Nohup

nohup è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX, che esegue un altro comando facendogli ignorare il segnale SIGHUP, in modo da permettergli di proseguire l'esecuzione anche in caso di una disconnessione dal terminale, o della chiusura dell'emulatore di terminale.

## Uso

La sintassi generale di nohup è la seguente:

Il parametro comando indica il comando da eseguire, ed i parametri facoltativi arg i suoi parametri.

Se lo standard output di nohup è diretto ad un terminale, il comando viene avviato effettuando la redirezione dello standard output verso il file nohup.out nella directory corrente; se ciò non fosse possibile (ad esempio per problemi di permessi), esso viene rediretto al file nohup.out nella directory indicata dalla variabile d'ambiente HOME, che normalmente è la home directory dell'utente che avvia nohup. Analogamente, se lo standard error è diretto ad un terminale, esso viene rediretto alla stessa destinazione dello standard output.

La versione GNU di nohup, in aggiunta a quanto sopra, effettua un controllo ulteriore: se lo standard input proviene da un terminale, esso viene rediretto dal dispositivo a caratteri /dev/null.

È da notare che nohup non attiva di per sé l'esecuzione in background del comando: essa si può ottenere sfruttando le capacità di job control della shell testuale, ad esempio terminando la linea con una "e" commerciale ("&").

## Esempi

Avvia una copia (tramite il comando cp) della directory /home/utente/dati nella directory /mnt/backup, effettuando per sicurezza la redirezione dello standard input da /dev/null. La copia viene eseguita in background (notare la "&" al termine della linea):

## Alternative

Il programma GNU Screen offre la possibilità di disconnettere il terminale senza che ciò comporti la chiusura della sessione di lavoro ed i programmi in essa avviati, in maniera funzionalmente equivalente a nohup, ma con la possibilità di riconnettersi in un momento successivo, anche da un terminale diverso.

