GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la differenza tra nohup e e commerciale

nohup rileva il segnale di riaggancio (vedi man 7 signal ) mentre la e commerciale no (eccetto che la shell è configurata in quel modo o non invia SIGHUP affatto).

Normalmente, quando si esegue un comando usando & e uscendo successivamente dalla shell, la shell terminerà il sottocomando con il segnale di riaggancio (kill -SIGHUP <pid> ). Questo può essere evitato usando nohup , poiché rileva il segnale e lo ignora in modo che non raggiunga mai l'applicazione effettiva.

Nel caso tu stia usando bash, puoi usare il comando shopt | grep hupon per scoprire se la tua shell invia o meno SIGHUP ai suoi processi figli. Se è disattivato, i processi non verranno terminati, come sembra essere il tuo caso. Ulteriori informazioni su come bash termina le applicazioni possono essere trovate qui.

Ci sono casi in cui nohup non funziona, ad esempio quando il processo avviato riconnette il SIGHUP segnale, come in questo caso.


myprocess.out & eseguirà il processo in background utilizzando una subshell. Se la shell corrente viene terminata (diciamo tramite logout), anche tutte le subshell vengono terminate, quindi anche il processo in background verrebbe terminato. Il comando nohup ignora il HUP signal e quindi anche se la shell corrente è terminata, la subshell e myprocess.out continuerebbe a funzionare in background. Un'altra differenza è che & alone non reindirizza lo stdout/stderr quindi se ci sono output o errori, questi vengono visualizzati sul terminale. nohup d'altra parte reindirizza lo stdout/stderr a nohup.out o $HOME/nohup.out .


La maggior parte delle volte accediamo al server remoto usando ssh. Se avvii uno script della shell e ti disconnetti, il processo viene interrotto. Nohup aiuta a continuare a eseguire lo script in background anche dopo che ti sei disconnesso dalla shell.

Nohup command name &
eg: nohup sh script.sh &

Nohup cattura i segnali HUP. Nohup non mette automaticamente il lavoro in background. Dobbiamo dirlo esplicitamente usando &


Linux
  1. Qual è la differenza tra InnoDB e MyISAM?

  2. La differenza di utilizzo tra variabili Shell e variabili d'ambiente?

  3. Qual è la differenza tra Redhat e centOS?

  4. Qual è la differenza tra &> e >&in bash?

  5. Qual è la differenza tra adduser e useradd?

Qual è la differenza tra Linux e Unix?

Qual è la differenza tra Login e Non-Login Shell

Qual è la differenza tra il comando apt e apt-get?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

Qual è la differenza tra unlink e rm?