Perché eseguire un comando shell Linux con '&'?
Per recuperare immediatamente il prompt ed eseguire il processo in background.
Quali sono le loro funzioni?
nohup consente al processo in background di continuare l'esecuzione anche dopo che l'utente si è disconnesso (o è uscito dalla shell di avvio).
> & reindirizza sia l'output standard sia l'errore standard nel file di registro.
e esegue tutto in background, restituendoti immediatamente il tuo prompt.
Spiegazione:
Ogni processo Linux apre tre canali I / O, un input "stdin", un output standard "stdout" e un output errore standard "stderr". Possono essere usati per i binari, ma sono tradizionalmente testo. Quando la maggior parte dei programmi vede chiudere lo stdin, questi escono (questo può essere modificato dal programmatore).
Quando la shell genitore esce, lo stdin viene chiuso sui bambini e (spesso, di solito) anche i bambini escono. Inoltre, i bambini ricevono un segnale software, SIGHUP, che indica che l'utente ha "riagganciato" (in precedenza, il modem) e anche qui l'impostazione predefinita è uscire. (Nota, un programmatore può cambiare tutto questo quando scrive il programma).
Quindi, ciò che fa nohup è dare al processo figlio un ambiente I / O separato, legando i dettagli in qualcosa che non è legato alla shell genitore e proteggendo il bambino dal segnale SIGHUP. Una volta che l'utente si disconnette, vedrai il processo in background nohup di proprietà di init (processo 1), non la shell dell'utente.
Tuttavia, nohup
non è possibile eseguire completamente il lavoro se il processo viene eseguito in primo piano, quindi &
viene utilizzato per eseguire il programma in background, dove può tranquillamente rimanere in esecuzione con o senza un utente connesso.