/ / Come mettere in pausa uno script Bash con il comando Sleep di Linux

Come mettere in pausa uno script Bash con il comando Sleep di Linux

Shell Bash sul concetto di desktop Unity

Il comando sleep fa funzionare il tuo computer LinuxNiente. Forse contro-intuitivo, ma a volte un periodo di inattività è proprio quello che serve. Questo articolo mostra come utilizzare questo comando della shell Bash in modo efficace.

utilizzando sleep è facile. Sul tipo di riga di comando sleep, uno spazio, un numero, quindi premere Invio.

sleep 5

Il cursore scompare per cinque secondi e poi ritorna. Quello che è successo? utilizzando sleep sulla riga di comando indica a Bash di sospendere l'elaborazione per la durata fornita. Nel nostro esempio sono stati cinque secondi.

Nessun output visibile dal comando sleep 5

Possiamo passare delle durate a sleep in giorni, ore e minuti, nonché in secondi. Per fare ciò includi un suffisso di entrambi d, h, m, o s con la durata. Per mettere in pausa il sonno per un giorno, quattro ore, sette minuti e cinque secondi, utilizzare un comando come questo:

sleep 1d 4h 7m 5s

Il s il suffisso (per secondi) è facoltativo. Senza suffisso, sleep tratterà qualsiasi durata come secondi. Supponiamo che tu voglia avere sleep pausa per cinque minuti e venti secondi. Un formato corretto di questo comando è:

sleep 5m 20

Se dimentichi di fornire il m suffisso sulla durata dei minuti, ti verrà indicato sleep mettere in pausa per cinque secondi e poi di nuovo per venti secondi. Così sleep si fermerà per 25 secondi.

Molti comandi richiedono di fornire i parametri in un ordine specifico, ma sleep è molto indulgente. Puoi fornirli in qualsiasi ordine e sleep avrà senso da loro. È inoltre possibile fornire un numero in virgola mobile come parametro. Ad esempio, 0,5 ore è un modo valido per indicare che si desidera sleep mettere in pausa per mezz'ora.

Tutti i seguenti comandi (sempre più eccentrici) lo dicono sleep mettere in pausa per 10 secondi.

sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m

Uso della sospensione per mettere in pausa prima di un comando

Il sleep Il comando può essere usato per dare una pausa prima dell'esecuzione di un comando. Questo comando si interrompe per 15 secondi e poi emette un segnale acustico.

sleep 15 && echo -en '07'

Uso della sospensione per mettere in pausa tra due comandi

Puoi usare sleep per dare una pausa tra due comandi. Questo comando elenca i file nella directory Documenti, si mette in pausa per cinque secondi e quindi cambia la directory di lavoro corrente nella directory home:

ls -R ~/Documents && sleep 5 && cd ~

Uscita da due comandi separati da sleep

Utilizzo di Sleep per mettere in pausa l'esecuzione di uno script

Puoi usare il sleep comando negli script shell per mettere in pausa l'esecuzione dila sceneggiatura per un preciso periodo di tempo. In genere, lo faresti per consentire al processo un tempo sufficiente per il completamento prima che lo script continui l'elaborazione. Puoi anche usarlo per limitare le richieste di uno script a un'altra risorsa.

Per dimostrarlo esattamente, ecco uno script che chiama un servizio web di Google utilizzando curl. Quando si interroga il servizio Web con il numero ISBN di un libro, risponde con un dump di dati JSON relativi a quel libro. Possiamo analizzare quei dati passandoli attraverso il file jq utilità per recuperare il titolo del libro. In modo che lo script non sottolinei il servizio Web, rimane in pausa per un secondo tra le richieste Web.

Creare un file contenente il seguente testo e salvarlo come check_book.sh.

#!/bin/bash
for book in `cat $1`
do
echo $book":"
curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | .[] | .volumeInfo.title'
echo ""
sleep 1
done
echo "All done."

Digitare il comando seguente per impostare le autorizzazioni di esecuzione e rendere eseguibile lo script.

chmod +x check_book.sh

Lo script richiede il curl e jq utilities. Uso apt-get per installare questi pacchetti sul tuo sistema se stai usando Ubuntu o un'altra distribuzione basata su Debian. Su altre distribuzioni Linux, utilizza invece lo strumento di gestione dei pacchetti della tua distribuzione Linux.

sudo apt-get install curl
sudo apt-get install jq

Creare un file di testo contenente i seguenti numeri e salvarlo come books.txt.

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Corri il check_book.sh script e passa il books.txt file come parametro.

./check_book.sh books.txt

Output dello script shell check_book.sh

Le richieste vengono inviate al servizio Web di Google a intervalli di un secondo. Il titolo del libro apparirà poco dopo aver interrogato ciascun codice ISBN.

Questo è tutto quello che c'è da fare sleep. I meccanismi interni del check_book.sh gli script vanno oltre lo scopo di questo articolo. La sceneggiatura è stata scelta esclusivamente per illustrare un uso valido di sleep comando. Se desideri leggere di più sui due componenti principali dello script, fai riferimento a curl pagina del progetto e il jq manuale in linea.