Processi in background (nohup + &) e foreground (JOBS, FG)
Usare nohup ed & per eseguire l’attività in background anche se si chiude il terminale.
nohup expdp \"sys/xxxxxx as sysdba\" dumpfile=... logfile=.. .. &
In genere è meglio mettere tutti i comandi in una shell script, diciamo comandi.sh e poi lanciare:
Ad esempio per lanciare un export del database
nohup expdp \"sys/xxxxxx as sysdba\" dumpfile=... logfile=.. .. &
nohup comandi.sh &
& manda in background il comando lanciato e, se non è utilizzato insieme al nohup, il comando lanciato, pur se attivo in backgound contemporaneamente alla shell che lo ha lanciato è comunque figlio della shell interattiva di login. Quindi se uscite dalla sessione interattiva la shell manderà il segnale di hangup (HUP) ai suoi figli, terminando tutti i processi in background.
Se invece volete che il lavoro continui anche se uscite dalla shell di login, dovete usare nohup.
Se invece volete che il lavoro continui anche se uscite dalla shell di login, dovete usare nohup.
In questo caso il comando lanciato col nohup appena partito si stacca dal "terminale di controllo", ovvero il suo parent pid non è più la shell di login, ma 1, il programma lanciato diventa una sorta di demone "dei poveri".
Proprio per evitare che la gestione dei segnali e delle dipendenze, che potrebbero essere personalizzate nel programma lanciato che è buona norma mettere l'istruzione, o il treno di istruzioni, dentro uno script e lanciare quello. In questo modo la shell forkata farà da tramite per tutte le attività di cui sopra, evitando interferenze con il programma lanciato.
Proprio per evitare che la gestione dei segnali e delle dipendenze, che potrebbero essere personalizzate nel programma lanciato che è buona norma mettere l'istruzione, o il treno di istruzioni, dentro uno script e lanciare quello. In questo modo la shell forkata farà da tramite per tutte le attività di cui sopra, evitando interferenze con il programma lanciato.
Peer visualizzare le attività in background eseguire il comando:
# jobs
Per passare da un processo in background a foreground
# fg
Per chiudere il foreground senza killare il processo
# Ctrl+c
Invece per stopparlo (killarlo)
# Ctrl+z