Dans l’univers de la programmation Bash, la maîtrise du temps est souvent aussi cruciale que la logique elle-même. La commande sleep est l’outil idéal pour introduire une pause script, une temporisation ou un délai d’exécution entre deux instructions. Simple, native et légère, elle s’intègre parfaitement dans toute ligne de commande ou script d’automation. Ce guide pratique vous montre comment l’utiliser efficacement, avec des exemples concrets et des bonnes pratiques issues du shell scripting.
Syntaxe et unités de temps de la commande sleep
La commande sleep repose sur une syntaxe minimale : sleep [nombre][suffixe]. Le paramètre numérique indique la durée, tandis que le suffixe détermine l’unité. Par défaut, si aucun suffixe n’est précisé, la pause est exprimée en secondes. Cette flexibilité permet d’adapter la temporisation à chaque besoin.
| 🕒 Suffixe | Unité | Exemple |
|---|---|---|
s (par défaut) |
Secondes | sleep 5 → 5 secondes |
m |
Minutes | sleep 2m → 2 minutes |
h |
Heures | sleep 1h → 1 heure |
d |
Jours | sleep 0.5d → 12 heures |
Les valeurs décimales (ex. sleep 0.5) sont supportées sur la plupart des systèmes modernes, offrant une précision jusqu’à la milliseconde. Cette souplesse rend la commande sleep indispensable pour les scénarios où un délai d’exécution fin est requis.
Comprendre le suffixe pour un contrôle précis
Chaque unité répond à un cas d’usage spécifique. Pour une simple attente entre deux commandes dans un script, les secondes suffisent. Pour un redémarrage différé de service, les minutes sont plus adaptées. Les heures et les jours sont réservés aux tâches planifiées à long terme, comme l’attente d’une mise à jour système. L’important est de toujours valider que le suffixe correspond à l’échelle de votre pause script.
Intégrer sleep dans vos scripts : exemples pratiques
Voici quatre cas d’usage concrets qui montrent comment la commande sleep s’inscrit dans une logique d’automation et de programmation Bash.
🔹 Pause simple entre deux commandes
Le scénario le plus basique : exécuter une première action, attendre, puis lancer la suivante. Ce pattern est courant pour éviter de surcharger un processeur ou pour laisser le temps à un fichier de se générer.
#!/bin/bash echo "Début de la sauvegarde..." sleep 5 echo "Sauvegarde terminée après 5 secondes."
Pour vérifier visuellement la temporisation, on peut afficher la date avant et après :
date sleep 10 date
🔹 Boucle avec sleep pour des itérations espacées
Dans une boucle for, la commande sleep permet d’espacer les itérations. Utile pour des opérations de monitoring légères ou pour limiter la fréquence d’appels vers une API.
#!/bin/bash for i in {1..5} do echo "Itération $i" sleep 1 done
Chaque cycle dure une seconde, ce qui donne un affichage progressif parfaitement lisible.
🔹 Délai avant le démarrage d’un service
Après avoir arrêté un service (ex. Apache), un délai peut être nécessaire pour que les ressources soient libérées. La commande suivante introduit une pause script de 5 secondes entre l’arrêt et le redémarrage.
#!/bin/bash echo "Arrêt du service..." systemctl stop apache2 sleep 5 echo "Redémarrage du service..." systemctl start apache2
🔹 Attendre qu’une machine soit en ligne
Un classique du shell scripting : tester la disponibilité réseau d’un hôte avec ping et répéter la tentative toutes les 3 secondes jusqu’à succès. La commande sleep évite de flooder le réseau tout en maintenant un monitoring actif.
#!/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
Bonnes pratiques et astuces pour la temporisation
Au-delà des usages simples, la commande sleep peut être combinée avec des variables, des calculs arithmétiques ou des conditions pour une automation avancée. Voici quelques conseils issus de l’expérience d’un consultant en programmation Bash.
Utiliser des variables pour des durées dynamiques
Plutôt que de coder en dur la durée, stockez-la dans une variable. Cela facilite la maintenance et permet d’ajuster le délai d’exécution sans modifier la logique du script.
#!/bin/bash DELAI=10 echo "Attente de $DELAI secondes..." sleep $DELAI echo "Fini !"
Combiner sleep avec d’autres commandes
La ligne de commande Linux offre des outils complémentaires : watch pour exécuter périodiquement, at pour planifier, ou timeout pour limiter la durée d’un processus. Cependant, sleep reste la solution la plus légère pour une simple temporisation au sein d’un script.
| ⚙️ Outil | Usage principal | Différence avec sleep |
|---|---|---|
sleep |
Pause fixe dans un script | Bloque l’exécution pour une durée définie |
watch |
Exécution répétée d’une commande | Nécessite une session interactive, pas idéal en script |
timeout |
Limiter la durée d’un processus | Interrompt une commande après un délai, ne suspend pas le script |
Chaque outil a sa place, mais pour une pause script pure, sleep reste la référence en shell scripting.
La maîtrise de la commande sleep ouvre la voie à des scripts plus robustes, capables de gérer des séquences temporelles complexes sans recourir à des outils externes. Que ce soit pour orchestrer des déploiements, espacer des requêtes ou attendre une ressource, ce petit outil fait partie de la boîte à outils essentielle de tout développeur en ligne de commande.
