Cosa significa il simbolo e commerciale (&) con `nohup`?


11

Ho visto tonnellate di esempi in cui a &segue la fine di una stringa di comando, ma non riesco a trovare una spiegazione su ciò che fa. Non è nemmeno in nohup's manpagina. È una cosa da guscio?

O usando &o no, trovo che qualsiasi processo eseguito nohupsembra mostrare immunità a qualsiasi segnale di blocco.


1
"Trovo che qualsiasi processo eseguito con Nohup sembra mostrare immunità a qualsiasi segnale di blocco." Ecco a cosa serve nohup.
Samuel Edwin Ward,

Ok, lasciatemi chiarire: gli unici esempi che ho visto usano il &, quindi non ero sicuro se &fosse una sorta di modificatore o argomento che facesse nohupcomportare diversamente.
Chad Harrison,

1
Questa è una cosa ragionevole da sospettare. In realtà non modifica il comportamento nohup (nohup non riesce nemmeno a vederlo) ma modifica il comportamento della shell.
Samuel Edwin Ward,

nohup & -> Nessun Hangup e lo sfondo. Dai bei vecchi tempi di modem e terminali seriali. Quando il mio terminale e il mio modem non sono in linea, continua a elaborarlo in background in modo che il lavoro sia terminato alla successiva connessione online.
Fiasco Labs

Risposte:


19

Dalla manpage di bash :

Se un comando viene terminato dall'operatore di controllo &, la shell esegue il comando in background in una subshell. La shell non attende il completamento del comando e lo stato di ritorno è 0.

Quindi sì, è una cosa shell e può essere usata con qualsiasi comando. In sostanza, ti restituisce immediatamente il controllo e consente il completamento del comando in background. Questo è quasi sempre usato con nohupperché in genere si desidera uscire dalla shell dopo aver avviato il comando.


4
Di recente ti ho visto pubblicare un sacco di buone risposte e il mio cervello traduce sempre il tuo nome utente in McGuyver. Non sono sicuro del motivo per cui sento il bisogno di dirtelo.
MDMarra,

1
@MDMarra Lo prenderò come un complimento ;-)
mgorven il

1
@MDMarra Almeno non pensi: "McGruber"
Ward -

7

L'uso della e commerciale (&) eseguirà il comando in un processo figlio (figlio della sessione bash corrente). Tuttavia, quando si esce dalla sessione, tutti i processi figlio verranno eliminati.

l'uso di nohup + e commerciale (&) farà la stessa cosa, tranne che al termine della sessione, il genitore del processo figlio verrà modificato in "1" che è il processo "init", preservando così il figlio dall'uccisione.


3

Sì, è una cosa di shell: esegue il comando in background, quindi non è necessario attendere la restituzione del comando corrente prima di eseguire altri comandi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.