Introduzione
SIGHUP
(Segnale Hang UP) è un segnale che termina un processo Linux quando il suo terminale di controllo è chiuso. Se si chiude accidentalmente un terminale o si perde la connessione con il server, tutti i processi in esecuzione in quel momento vengono automaticamente terminati.
Utilizzando il nohup
Il comando è un modo per bloccare il SIGHUP
segnale e consentendo il completamento dei processi anche dopo il logout dal terminale/shell.
In questo articolo imparerai come usare il nohup
comando durante l'esecuzione dei processi.
Sintassi nohup
La sintassi per l'utilizzo di nohup
il comando è:
nohup [command] [argument]
Opzioni nohup
Il nohup
comando presenta due opzioni di comando di base, il --help
e il --version
opzioni.
Per visualizzare il messaggio di aiuto, eseguire il comando:
nohup --help
Per visualizzare le informazioni sulla versione, digita:
nohup --version
Nessun esempio
Esistono diversi modi per utilizzare nohup
comando, incluso l'esecuzione del processo richiesto in background, l'esecuzione di più processi contemporaneamente o il reindirizzamento dell'output a un file diverso.
Gli esempi seguenti illustrano i casi d'uso comuni per nohup
comando.
1. Esecuzione di un processo senza hup
Per eseguire un comando usando nohup
senza argomenti, segui semplicemente la sintassi:
nohup [command]
La shell ignora l'output e lo aggiunge a nohup.out file.
Ad esempio, eseguendo example.sh bash (che è un semplice Hello World script) dovrebbe richiedere Hello World messaggio nel file nohup.out :
nohup bash example.sh
Verifica il contenuto del file con:
cat nohup.out
2. Esecuzione di un processo in background senza hup
L'esecuzione di un processo Linux in background libera il terminale su cui stai lavorando. Per eseguire un processo Linux in background con il nohup
comando, aggiungi il &
simbolo alla fine del comando:
nohup [command] &
Ad esempio, per eseguire example.sh bash in background, usa il comando:
nohup bash example.sh &
L'output mostra l'ID processo shell e l'ID processo - [1] 7366 nell'esempio seguente.
Per portare il comando in primo piano, digita:
fg
L'output indica se il processo è in corso o completato.
3. Esecuzione di più processi in background senza hup
nohup bach -c '[command1] && [command2]'
Sostituisci [command1]
e [command2]
con i comandi a tua scelta. Aggiungi altri comandi se necessario, assicurandoti di separarli con &&
.
Ad esempio, per visualizzare la data/ora e il calendario del mese corrente, eseguire:
nohup bash -c 'date && cal'
Poiché l'output è diretto a nohup.out file, usa il comando cat per elencare il contenuto del file e verifica il comando sopra:
cat nohup.out
L'output mostra la data e il calendario richiesti con il comando sopra.
4. Reindirizzamento dell'output su un file diverso
Come menzionato nella sezione precedente, nohup
registra tutti i messaggi di output e gli errori in nohub.out file.
Reindirizza questi messaggi specificando una posizione personalizzata all'interno del comando:
nohup [command] > /path/to/output/file.txt
Nell'esempio seguente, l'output per il comando nohup bash -c 'date && cal'
viene reindirizzato a output.txt file. Verificare l'output con il comando:
cat output.txt