Il solito stile di esecuzione di un comando su un terminale Linux è semplicemente eseguirlo e attendere che esca con grazia. Una volta terminato il comando, puoi quindi procedere con l'esecuzione di altri comandi in successione. Questo è ciò che è noto come eseguire comandi in primo piano. Come suggerisce la parola, puoi vedere visivamente l'output del comando sul terminale.
A volte, tuttavia, l'esecuzione di comandi in primo piano può presentare una serie di sfide. Il comando può richiedere troppo tempo per uscire causandoti una perdita di tempo prezioso e altre volte, può essere totalmente collegato alla sessione della shell lasciandoti bloccato.
In questi casi, eseguire un comando in background è la soluzione migliore. Puoi inviare uno o più comandi in background mentre esegui contemporaneamente altri comandi in primo piano. Ciò migliora l'efficienza del lavoro sul terminale e ti fa risparmiare tempo.
In questa guida, ci concentreremo su come eseguire comandi o script della shell Linux in background.
Esecuzione del comando della shell in background utilizzando il segno (&)
Per eseguire un comando o uno script in background, terminarlo con un segno e commerciale (&) alla fine come mostrato.
$ comando &
NOTA:terminare il comando con il segno e commerciale non stacca il comando da te. Lo invia semplicemente allo sfondo della shell corrente che stai utilizzando, il comando stamperà comunque l'output su STDOUT o STDERR che ti impedirà di eseguire altri comandi sul terminale.
Un approccio migliore consiste nel reindirizzare il comando su /dev/null e successivamente aggiungere il segno e commerciale alla fine come mostrato
$ comando &>/dev/null &
Per confermare che il comando è stato inviato in background, esegui il comando jobs.
Per terminare il processo in background, eseguire il comando kill seguito dal PID del processo come segue. L'opzione -9 termina immediatamente il processo.
$ kill -9 138314
Esecuzione del comando della shell o dello script in background usando il comando nohup
Un altro modo per eseguire un comando in background è utilizzare il comando nohup. Il comando nohup, abbreviazione di no hang up, è un comando che mantiene un processo in esecuzione anche dopo essere uscito dalla shell.
Lo fa impedendo ai processi di ricevere un segnale SIGHUP (Signal Hang UP), che è un segnale che viene tipicamente inviato a un processo quando esce dal terminale.
Per inviare un comando o uno script in background e mantenerlo in esecuzione, utilizza la sintassi:
$ comando nohup &>/dev/null &
$ nohup shell-script.sh &>/dev/null &
Ad esempio,
$ nohup ping google.com &>/dev/null &
Ancora una volta, puoi verificare che il comando sia in esecuzione in background usando il comando:
$ jobs
Conclusione
In questa guida, abbiamo trattato due modi per eseguire comandi o script di shell in background. Abbiamo visto come eseguire comandi in background usando il &sign e il comando nohup.
Leggi anche :Comando Linux zip e decomprimi con esempi