Lorsque vous écrivez des scripts Bash sous Linux, vous avez souvent besoin d’introduire une pause ou un délai dans l’exécution. Qu’il s’agisse de limiter les demandes d’API, d’attendre la fin d’un processus ou de simuler des opérations temporelles, la commande sleep est l’utilitaire qu’il vous faut.

Dans cet article, nous allons explorer comment utiliser efficacement la commande sleep dans Bash, en incluant des exemples concrets, des unités de temps et des conseils pour une utilisation avancée.

Qu’est-ce que la commande sleep ?

La commande sleep met en pause l’exécution d’un script ou d’une commande pendant une durée déterminée. Elle est disponible par défaut sur presque tous les systèmes de type Unix, y compris Linux et macOS.

Syntaxe de base :

sleep NUMBER[SUFFIX]
  • NUMÉRO: la durée

  • SUFFIX (facultatif) : unité de temps(s, m, h, d)

Si aucun suffixe n’est spécifié, les secondes sont prises en compte.

Cas d’utilisation pratique dans les scripts Bash

1. Pause entre les commandes

#!/bin/bash
echo "Démarrage du processus..."
sleep 3
echo "Le processus reprend après 3 secondes"

2. Retarder l’exécution dans les boucles

#!/bin/bash
for i in {1..5} ; do
echo "Ping $i"
sleep 1
done

3. Attendre le démarrage des services

Si vous lancez un processus en arrière-plan qui prend du temps à s’initialiser :

#!/bin/bash
./start_server.sh &
sleep 10
curl http://localhost:8080/healthcheck

4. Limitation du débit dans les scripts

Lorsque vous interagissez avec des API ou que vous effectuez des tâches répétitives qui nécessitent une limitation de débit :

#!/bin/bash
for url in $(cat urls.txt) ; do
curl -s "$url"
sleep 2 # Éviter de surcharger le serveur
done

Attention : Utiliser Sleep de manière responsable

  • L’utilisation excessive de la mise en veille peut conduire à des scripts inefficaces, en particulier dans les environnements exigeant des performances élevées.

  • Pour les scripts pilotés par des événements, envisagez inotifywait ou des conditionnels logiques plutôt que des mises en veille arbitraires.

  • Dans le cadre de l’automatisation ou du DevOps, évitez les longues durées de mise en veille, sauf si cela est strictement nécessaire – préférez l’interrogation avec une logique de temporisation.

Conseils de pro

  • Utilisez sleep avec & pour l’exécuter en arrière-plan :

    sleep 5 & # Continuer l'exécution immédiatement tout en dormant en arrière-plan
  • Combinez avec wait si nécessaire :

    sleep 5 &
    attendre
    echo "Waited for sleep to finish" (Attente de la fin du sommeil)
  • Dans les tâches systemd ou crontab, évitez sleep à moins que cela ne soit absolument nécessaire. Utilisez des temporisateurs au niveau du système lorsque c’est possible.

Conclusion

La commande sleep est un outil simple mais puissant dans les scripts Bash pour contrôler le timing et le rythme de vos scripts. Que vous créiez des délais entre les tâches, que vous limitiez les boucles ou que vous coordonniez des actions asynchrones, la commande sleep vous permet de contrôler précisément le flux d’exécution.

En l’utilisant à bon escient et en comprenant ses implications, vous pouvez écrire des scripts plus prévisibles, plus faciles à maintenir et plus stables sur les systèmes Linux.