androide

Comando nohup di Linux

Aula Sobre o Comando NOHUP #LINUX

Aula Sobre o Comando NOHUP #LINUX

Sommario:

Anonim

Il comando nohup esegue un altro programma specificato come argomento e ignora tutti i SIGHUP (hangup). SIGHUP è un segnale che viene inviato a un processo quando il suo terminale di controllo è chiuso.

Di solito, quando si esegue un programma su SSH, se la connessione si interrompe o ci si disconnette, la sessione viene terminata e tutti i processi eseguiti dal terminale verranno interrotti. Qui è dove il comando nohup è utile. Ignora tutti i segnali di riaggancio e il processo continuerà a essere eseguito.

Come usare il comando nohup

La sintassi per il comando nohup è la seguente:

nohup COMMAND

Il comando non accetta altre opzioni ad eccezione di --help e --version standard.

Diamo un'occhiata al seguente esempio:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup esegue il comando mycommand in primo piano e reindirizza l'output del comando al file nohup.out . Questo file viene creato nella directory di lavoro corrente. Se l'utente che esegue il comando non dispone delle autorizzazioni di scrittura per la directory di lavoro, il file viene creato nella home directory dell'utente.

Se si disconnette o si chiude il terminale, il processo non viene terminato.

Esecuzione del comando in background

L'uso di nohup in primo piano non è molto utile perché non sarai in grado di interagire con la shell fino al completamento del comando.

Per eseguire il comando in background aggiungi il simbolo & alla fine del comando:

nohup mycommand &

L'output include l'ID lavoro shell (racchiuso tra parentesi) e l'ID processo:

25177

È possibile utilizzare l'ID lavoro per portare il comando in primo piano utilizzando il comando fg .

Se per qualche motivo vuoi terminare il processo, usa il comando kill seguito dall'ID processo:

kill -9 25132

Reindirizzamento dell'output su un file

Per impostazione predefinita, nohup reindirizza l'output del comando sul file nohup.out . Se si desidera reindirizzare l'output su un file diverso, utilizzare il reindirizzamento della shell standard.

Ad esempio, per reindirizzare l'output standard e l'errore standard su mycommand.out dovrai utilizzare:

nohup mycommand > mycommand.out 2>&1 &

Per reindirizzare l'output standard e l'errore standard su file diversi:

nohup mycommand > mycommand.out 2> mycommand.err &

alternative

Esistono diversi programmi alternativi che è possibile utilizzare per evitare che un comando venga interrotto alla chiusura del terminale o alla disconnessione.

Schermo

Screen o GNU Screen è un programma multiplexer terminale che consente di avviare una sessione dello schermo e aprire un numero qualsiasi di finestre (terminali virtuali) all'interno di quella sessione. I processi in esecuzione sullo schermo continueranno a essere eseguiti quando la loro finestra non è visibile anche se si viene disconnessi.

tmux

Tmux è una moderna alternativa allo schermo GNU. Con Tmux, puoi anche creare una sessione e aprire più finestre all'interno di quella sessione. Le sessioni di Tmux sono persistenti, il che significa che i programmi in esecuzione in Tmux continueranno a funzionare anche se si chiude il terminale.

rinnegare

disown è un builtin della shell che rimuove un lavoro shell dal controllo dei lavori della shell. A differenza di nohup , è possibile utilizzare anche il disown sui processi in esecuzione.

Conclusione

nohup consente di impedire la chiusura dei comandi quando ci si disconnette o si esce dal terminale.

terminale nohup