GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire il comando / script della shell di Linux in background

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


Linux
  1. Come creare uno script di un comando Linux

  2. Come eseguire script Python dalla shell

  3. Come eseguire uno script di shell all'avvio

  4. Come eseguire uno script in background (linux openwrt)?

  5. Come ripulire l'output del comando 'script' di Linux

Come memorizzare un comando Linux come variabile nello script della shell

Come eseguire periodicamente un comando in Linux usando Watch

Come utilizzare il comando Declare in Linux Bash Shell

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire un comando in uno script della shell?

Come creare ed eseguire uno script di shell in Ubuntu 22.04