La commande Linux sleep est l'une des commandes les plus simples. Comme vous pouvez le deviner d'après son nom, sa seule fonction est de dormir. En d'autres termes, il introduit un délai pendant un temps spécifié.
Donc, si vous utilisez la commande sleep avec x et que la commande suivante ne peut être exécutée qu'après x secondes.
La commande Sleep a une syntaxe simple :
sleep Number[Suffix]
Ici, le suffixe pourrait être :
- s pour secondes. C'est la valeur par défaut.
- m pour minutes.
- h pendant des heures.
- j pendant des jours.
Voyons quelques exemples de la commande sleep.
Exemples de commandes de veille bash
Bien que vous puissiez l'utiliser directement dans un shell, la commande sleep est couramment utilisée pour introduire un retard dans l'exécution d'un script bash. Je vais montrer l'utilisation de la commande sleep à travers des exemples de scripts bash.
La commande Sleep sans suffixe compte en secondes
Supposons que vous vouliez mettre en pause votre script bash pendant 5 secondes, vous pouvez utiliser sleep comme ceci :
sleep 5
Dans un exemple de script bash, cela pourrait ressembler à ceci :
!/bin/bash
echo "Sleeping for 5 seconds…"
sleep 5
echo "Completed"
Si vous l'exécutez avec la commande time, vous verrez que le script bash s'est en fait exécuté pendant (un peu) plus de 5 secondes.
time ./sleep.sh
Sleeping for 5 seconds…
Completed
real 0m5.008s
user 0m0.000s
sys 0m0.007s
Commande Sleep avec suffixe minute ou heure ou jour
Vous pouvez spécifier le temps de veille en minutes de la manière suivante :
sleep 1m
Cela mettra le script/shell en pause pendant une minute. Si vous souhaitez retarder le script en heures, vous pouvez le faire avec l'option h :
sleep 2h
Même si vous souhaitez suspendre le script bash pendant des jours, vous pouvez le faire avec le suffixe d :
sleep 5d
Cela peut être utile si vous souhaitez courir un jour ou un jour sur deux.
Commande de veille avec une combinaison de seconde, minute, heure et jour
Vous n'êtes pas obligé d'utiliser un seul suffixe à la fois. Vous pouvez utiliser plus d'un suffixe et la durée du sommeil est la somme de tous les suffixes.
Par exemple, si vous utilisez la commande suivante :
sleep 1h 10m 5s
Cela maintiendra le script en attente pendant 1 heure, 10 minutes et 5 secondes. Notez que le suffixe s est toujours facultatif ici.
Astuce bonus :dormez moins d'une seconde
Vous avez peut-être remarqué que la plus petite unité de temps dans la commande sleep est la seconde. Mais que se passe-t-il si votre script bash se met en veille pendant quelques millisecondes ?
La bonne chose est que vous pouvez utiliser la virgule flottante (points décimaux) avec la commande sleep.
Donc, si vous voulez introduire une pause de 5 millisecondes, utilisez-la comme ceci :
sleep 0.005
Vous pouvez également utiliser des points décimaux avec d'autres suffixes.
sleep 1.5h 7.5m
Il introduira un délai de 1 heure, 37 minutes et 30 secondes.
J'espère que vous n'avez pas dormi en lisant ces exemples de commande sleep 😉
Si vous êtes intéressé par les scripts shell, vous aimeriez peut-être également en savoir plus sur la comparaison de chaînes dans bash. Si vous avez des questions ou des suggestions, n'hésitez pas à demander.