The Geek Diary (Italiano)

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!...

NOTA: se si esegue un altro comando utilizzando nohup, l’output viene aggiunto al nohup esistente.fuori file. Fare attenzione quando si eseguono più comandi dalla stessa directory, perché tutto l’output viene inviato allo stesso nohup.fuori file, che può diventare confuso.,

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.

Author: admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *