In alternativa, dopo aver avviato il programma, puoi premere Ctrl-Z che interrompe il programma e quindi digitare
bg
che mette in background il tuo ultimo programma interrotto. (Utile se hai iniziato qualcosa senza '&' e lo vuoi ancora in background senza riavviarlo)
nohup cmd
non riattacca quando chiudi il terminale. l'output per impostazione predefinita va a nohup.out
Puoi combinare questo con lo sfondo,
nohup cmd &
ed eliminare l'output,
nohup cmd > /dev/null 2>&1 &
puoi anche disown un comando. digitare cmd , Ctrl-Z , bg , disown
Puoi semplicemente eseguire lo script in background:
$ myscript &
Nota che questo è diverso dal mettere il & all'interno del tuo script, che probabilmente non farà quello che vuoi.
Tutti hanno semplicemente dimenticato disown . Quindi ecco un riepilogo:
-
&mette il lavoro in secondo piano.- Blocca il tentativo di leggere l'input e
- Fa in modo che la shell non aspetti il suo completamento.
-
disownrimuove il processo dal job control della shell, ma lo lascia comunque connesso al terminale.- Uno dei risultati è che la shell non gli invierà un
SIGHUP(Se la shell riceve unSIGHUP, invia anche unSIGHUPal processo, che normalmente ne provoca l'interruzione). - E ovviamente, può essere applicato solo ai lavori in background (perché non puoi inserirlo quando è in esecuzione un lavoro in primo piano).
- Uno dei risultati è che la shell non gli invierà un
-
nohupdisconnette il processo dal terminale, reindirizza il suo output anohup.oute lo protegge daSIGHUP.- Il processo non riceverà alcun
SIGHUPinviato . - È completamente indipendente dal controllo del lavoro e in linea di principio potrebbe essere utilizzato anche per lavori in primo piano (anche se non è molto utile).
- Solitamente utilizzato con
&(come lavoro in background).
- Il processo non riceverà alcun