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.
-
disown
rimuove 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 unSIGHUP
al 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
-
nohup
disconnette il processo dal terminale, reindirizza il suo output anohup.out
e lo protegge daSIGHUP
.- Il processo non riceverà alcun
SIGHUP
inviato . - È 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