26/03/2025

Bash

Script Bash – Comment effectuer une pause avec la commande sleep ?

I. Présentation

Si vous avez besoin d'effectuer une pause ou de marquer un temps d'arrêt dans un script Bash, la commande sleep devrait vous rendre bien des services !

Cette commande simple peut s'avérer utile, par exemple, pour effectuer une pause entre deux instructions. Elle permet d'éviter l'exécution immédiate des commandes suivantes. La bonne nouvelle, c'est que sleep est une commande native des systèmes Unix/Linux, et elle s'intègre parfaitement dans les scripts pour offrir un contrôle temporel.

Dans ce tutoriel, nous allons évoquer la syntaxe de cette commande et nous verrons comment l'utiliser au travers de plusieurs exemples.

Version originale de l'article : 19 avril 2013

II. La syntaxe de la commande sleep

La syntaxe de base de la commande sleep est simple :

sleep [nombre][suffixe]

Le paramètre [nombre] correspond à la durée de la pause, tandis que le paramètre [suffixe] indique l'unité de temps. Par défaut, la pause est exprimée en seconde, donc il est envisageable de ne pas préciser de suffixe.

Voici les autres unités de temps que vous pouvez utiliser :

  • s : secondes (par défaut, donc facultatif).
  • m : minutes.
  • h : heures.
  • d : jours.

Exemples d'utilisation :

  • sleep 5 : pause de 5 secondes.
  • sleep 2m : pause de 2 minutes.
  • sleep 1h : pause de 1 heure.
  • sleep 0.5 : pause de 0,5 seconde (500 millisecondes).

Voilà, vous savez déjà tout pour utiliser la commande sleep sur Linux ! Mais, nous allons tout de même voir son intégration dans un script Bash.

III. Exemple d'utilisation de sleep

Voici quelques exemples concrets d'utilisation de la commande sleep dans des scripts Bash :

1. Pause simple entre deux commandes :

Dans cet exemple, le script affiche un message (instruction "echo"), attend 5 secondes, puis affiche un autre message.

#!/bin/bash
echo "Début de la tâche..."
sleep 5
echo "Tâche terminée après 5 secondes."

Pour bien montrer que la commande sleep fonctionne correctement, nous pourrions afficher la date avant et après la pause. Ici, avec une pause de 10 secondes.

date
sleep 10
date

Ce qui donne :

2. Pause dans une boucle :

Ce script boucle 5 fois grâce à une boucle For, affichant un message à chaque itération avec une pause d'une seconde entre chaque itération.

#!/bin/bash
for i in {1..5}
do
    echo "Itération $i"
    sleep 1
done

3. Délai avant le démarrage d'un service :

Dans cet exemple, une pause de 5 secondes est introduite entre l'arrêt et le redémarrage du service Apache.

#!/bin/bash
echo "Arrêt du service..."
systemctl stop apache2
sleep 5
echo "Redémarrage du service..."
systemctl start apache2

4. Attendre qu'une machine soit en ligne

Terminons par un dernier exemple pratique, dont l'objectif est le suivant : effectuer un ping sur une adresse IP et indiquer le message "Hôte en ligne" quand celle-ci sera en ligne. Pour éviter d'effectuer des ping trop réguliers, nous allons espacer chaque tentative de 3 secondes grâce à la commande sleep ! Ici, nous utiliserons une boucle while en Bash, en indiquant ":", afin de créer une boucle infinie ! Lorsque la machine répondra au ping, en plus d'écrire un message dans la console, nous effectuerons un "break" afin de sortir de la boucle. Ici, le ping est effectué vers "192.168.1.1".

Ce qui donne le code suivant :

#!/bin/bash
host=192.168.1.1

while :
do
  if ping -c 1 $host &> /dev/null
  then
    echo "Hôte en ligne !"
    break
  fi
  sleep 3
done

IV. Conclusion

La commande sleep ne fait rien de plus que ce que l'on attend d'elle : faire une pause d'une durée définie. Si vous avez l'habitude d'écrire des scripts Bash, vous aurez probablement besoin d'en faire usage à un moment ou un autre.

En la combinant avec d'autres outils ou commandes, il est possible de concevoir des scripts encore plus performants et adaptés à des cas d'utilisation variés.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.