Qual è la funzione del comando nohup?

18

Sono un principiante in Ubuntu. Ho imparato un comando

nohup [command] - esegui <command> immune al segnale di blocco

Non riesco a capire il significato di " immune al segnale di blocco ". Che tipo di segnale sta parlando? E per favore dimmi come usare questo comando con un esempio.

    
posta coding_ninza 12.01.2018 - 14:52

2 risposte

34

Consideriamo che hai aperto un editor di testo gedit da un terminale e ci stiamo lavorando. Se chiudi il terminale prima di chiudere gedit , anche gedit si chiude non appena chiude il terminale. Allora, cosa sta succedendo qui? Il gedit viene eseguito come un processo figlio sotto il terminale. Quando chiudi il terminale, viene inviato un segnale di sospensione ( SIGHUP ) al processo che uccide il processo secondario.

D'altro canto, se vuoi che il tuo processo figlio (qui gedit ) continui a funzionare anche dopo aver chiuso il terminale genitore, vorrai che il tuo processo sia immune al segnale di blocco. In modo che la chiusura del terminale non chiudere il processo figlio. nohup fa esattamente questo lavoro.

nohup non scollega un comando dal terminale , rende il tuo script ignorato SIGHUP e reindirizza stdout / stderr in un file nohup.out, in modo che il comando possa continuare a essere eseguito in background dopo la disconnessione. Se chiudi la shell / terminale o scollegati, il tuo comando non è più figlio di quella shell. Appartiene al processo di init. Se cerchi in pstree vedrai che ora è di proprietà di processo 1 (init). Questo non può essere riportato in primo piano perché il primo piano non esiste più.

    
risposta data souravc 12.01.2018 - 15:11
16

Oltre a ciò che @sourvac ha scritto, questo è un retaggio di Back In The Day quando le persone si collegavano tramite terminali stupidi solo testo, spesso tramite (il modem originale analogico a 110 baud): il "blocco" è letteralmente "sospeso" telefono ".

Un pid che è immune al segnale di hangup continuerà a essere in esecuzione anche dopo che avrai scollegato e riagganciato il telefono . Questo è stato molto utile sui computer lenti quando i lavori venivano eseguiti per ore e ore, e non si poteva semplicemente rimanere loggati (qualcun altro aveva bisogno di usare il terminale, era necessario usare il telefono, statico nel linea potrebbe "bzzt" la connessione, ecc.)

    
risposta data RonJohn 12.01.2018 - 16:14

Leggi altre domande sui tag