Come utilizzare il comando Sleep di Linux per mettere in pausa uno script BASH

Cosa sapere

  • Utilizzare il dormire comando più un tempo; S=secondi, m=minuti, h=ore, o D=giorni (Per esempio, dormi 5 secondi mette in pausa lo script per 5 secondi).
  • Utilizzo l'uomo dorme per più.

Questo articolo spiega come usare il comando sleep di Linux per mettere in pausa un script bash, tra l'altro. Da solo, il comando sleep non è molto utile. Tuttavia, come parte di uno script, può essere utilizzato in molti modi. Ad esempio, puoi usarlo per mettere in pausa lo script prima di riprovare un comando che non è riuscito la prima volta.

Persona che esegue il comando di sospensione di Linux per 20 secondi su un laptop
Kaley McKean / Lifewire

Un esempio di utilizzo del comando Sleep

Immagina di avere uno script che elabora i file che sono stati scaricati da un altro server. Lo script non dovrebbe avviare il processo di copia fino al termine del download di tutti i file. Il processo di download viene eseguito da uno script separato che viene eseguito prima del tuo.

Lo script che copia i file può contenere un ciclo per verificare se tutti i file sono stati scaricati (lo fa controllando se sono stati trovati 50 file prima di avviare il processo di copia).

Non ha senso testare costantemente gli script poiché questo utilizza il tempo del processore. Invece, potresti mettere in pausa per alcuni minuti tra ogni test prima di riprovare. Il comando del sonno è perfetto in tali circostanze.

Come usare il comando Sleep

Per utilizzare il comando di sospensione di Linux, inserisci quanto segue nella finestra del terminale:

dormi 5 secondi

Il comando precedente mette in pausa il terminale per 5 secondi prima di tornare alla riga di comando.

Il comando sleep richiede la parola chiave dormire, seguito dal numero che si desidera mettere in pausa e dall'unità di misura.

È possibile specificare il ritardo in secondi, minuti, ore o giorni.

  • S: Secondi
  • m: Minuti
  • h: Ore
  • D: Giorni

Quando si tratta di sospendere uno script per giorni, utilizzare un cron job per eseguire lo script a intervalli regolari, invece di eseguire uno script in background per giorni.

Un cron job è un comando o uno script Linux che puoi pianificare per l'esecuzione a un'ora o un giorno prestabilito. Questi sono utili per ripetere le attività per un lungo periodo di tempo.

Il numero per l'intervallo del comando di sospensione non deve essere un numero intero. Puoi anche usare numeri in virgola mobile.

Comando di sospensione di Linux

Ad esempio, la seguente sintassi include una frazione di secondo:

dormire 3.5s

Un esempio di utilizzo del comando Sleep

Lo script seguente mostra come utilizzare il comando sleep per creare un conto alla rovescia basato su terminale:

#!/bin/bash
x=10
mentre [ $x -gt 0 ]
fare
dormi 1 secondo
chiaro
echo "$x secondi prima dell'esplosione"
x=$(($x - 1 ))
fatto

Ecco come funziona questo script:

  • Lo script imposta la variabile x su 10.
  • Il ciclo while continua a scorrere mentre il valore di x è maggiore di zero.
  • Il comando sleep mette in pausa lo script per 1 secondo ogni volta intorno al ciclo.
  • Il resto dello script cancella lo schermo ad ogni iterazione, visualizza il messaggio "x secondi fino all'esplosione" e sottrae 1 dal valore di x.
Linux dorme nello script

Senza il comando sleep, lo script si ingrandirebbe e i messaggi verrebbero visualizzati troppo rapidamente.

Come utilizzare gli interruttori dei comandi di sospensione

Il comando sleep ha solo un paio di opzioni.

Il --aiuto switch mostra il file della guida per il comando sleep. Puoi ottenere la stessa cosa usando il comando man come segue:

l'uomo dorme. 

Il --versione L'opzione mostra la versione del comando sleep installato nel sistema.

Le informazioni restituite dall'opzione --version sono le seguenti:

  • Numero della versione
  • Dettagli sul copyright
  • Licenza
  • Autori

Metti in pausa i comandi del terminale con Sleep

Un altro buon uso del comando sleep è mettere in pausa i comandi digitati nella finestra del terminale.

Se lo desideri, puoi digitare due comandi di seguito, aspettando che il primo finisca prima di digitare il secondo.

Tuttavia, un approccio più rapido consiste nel digitare i due comandi su una riga, con un comando di sospensione tra ciascun comando:

$ cd /mydirectory/ && sleep 3 && ls. 

Come funziona questo comando:

  • Il cd /miadirectory/ comando cambia la directory.
  • Il dormire 3 Il comando attende tre secondi per il completamento del comando cd.
  • Il ls Il comando esegue e visualizza il contenuto della directory.

Per un semplice esempio come questo, il comando sleep consente di risparmiare solo un po' di tempo. Tuttavia, se si dispone di un lungo elenco di comandi, la possibilità di digitare i comandi su una riga consente di risparmiare tempo.