L’utilità nohup esegue una riga di comando in modo tale che il comando continua a funzionare dopo il logout. In altre parole, nohup fa sì che un processo ignori un segnale SIGHUP. A seconda di come è configurata la shell locale, un processo avviato senza nohup e in esecuzione in background potrebbe essere ucciso quando si disconnette.,
Sintassi per l’esecuzione del comando nohup
La sintassi di base per l’esecuzione di un comando nohup è la seguente:
# nohup command_with_options &
Qualsiasi output del tuo lavoro verrà reindirizzato a un file chiamato ‘ nohup.out’, a meno che non si specifichi diversamente con
# nohup command > myout.file 2>&1
che invia tutto l’output al file myout.file.
Salvataggio dell’output del comando nohup
Se non si reindirizza l’output da un comando eseguito utilizzando nohup, sia lo standard output che lo standard error vengono inviati al file denominato nohup.nella directory di lavoro., Se non si dispone dell’autorizzazione di scrittura per la directory di lavoro, nohup invia l’output a ~ / nohup.fuori.
Puoi anche inviare l’output a qualsiasi altro file specificato da te come mostrato sopra nel sytax del comando.
Esempi
Esecuzione di nohup senza specificare un file di output
Facciamo un esempio e testiamo che effettivamente continui a funzionare dopo esserti disconnesso. Inizieremo un copione chiamato script.sh., Il contect dello script è il seguente:
# cat script.sh#!/bin/shwhile(true)do echo "Hello World!" sleep 10done
Consente di eseguire lo script in backgroupd con il comando nohup:
# nohup script.sh & 179 $ nohup: appending output to `nohup.out`
Come si può vedere sopra non abbiamo specificato un file di output. Quindi l’output standard e l’errore standard per impostazione predefinita vanno nel nohup.out file nella directory da cui è stato richiamato lo script. Anche il numero 179 ha specificato l’ID processo(PID) del lavoro. Questo PID può essere verificato nell’output del comando” ps-ef ” come mostrato di seguito.,
Ora esci dalla shell, accedi di nuovo ed esegui il seguente comando:
$ ps x | grep script.sh179 ? S N 0:01 sh /root/script.sh 506 p2 S 0:00 grep script.sh
Lo script funziona ancora. Usa “ps-ef / grep ps1” se il tuo sistema non supporta ps x. Puoi anche controllare il file di output nohup.fuori per ulteriori conferme.
# cat nohup.outHello World!Hello World!Hello World!Hello World!...
Esecuzione nohup specifica un file di output
Ora lo script può essere eseguito anche nohup comando e specificare un custom file di output, come illustrato di seguito:
# nohup script.sh > /tmp/script.out 2>&1 14235
Conclusione
Se si esegue un processo e non credo che sarà completata nel momento in cui si accede per il giorno, utilizzare il comando nohup. Nohup continuerà l’elaborazione quando esci dal tuo account. Nohup significa non riagganciare.