Fatmawati Achmad Zaenuri / Shutterstock.com
La commande sleep fait que votre ordinateur Linux ne fait rien. Contre-intuitif peut-être, mais une période d’inactivité est parfois juste ce qu’il faut. Cet article vous montre comment utiliser efficacement cette commande shell Bash.
En utilisant sleep
est facile. Sur le type de ligne de commande sleep
, un espace, un nombre, puis appuyez sur Entrée.
sleep 5
Le curseur disparaîtra pendant cinq secondes, puis reviendra. Qu’est-il arrivé? En utilisant sleep
sur la ligne de commande indique à Bash de suspendre le traitement pendant la durée que vous avez indiquée. Dans notre exemple, c’était cinq secondes.
On peut passer des durées à sleep
en jours, heures et minutes, ainsi qu’en secondes. Pour ce faire, ajoutez un suffixe soit d, h, m,
ou s
avec la durée. Pour mettre le sommeil en pause pendant un jour, quatre heures, sept minutes et cinq secondes, utilisez une commande comme celle-ci:
sleep 1d 4h 7m 5s
le s
suffixe (pour les secondes) est facultatif. Sans suffixe, sleep
traitera toute durée en secondes. Supposons que vous vouliez avoir sleep
faites une pause de cinq minutes et vingt secondes. Un format correct de cette commande est:
sleep 5m 20
Si vous oubliez de fournir le m
suffixe sur la durée des minutes, vous indiquerez sleep
pour faire une pause de cinq secondes, puis de nouveau pendant vingt secondes. Alors sleep
s’arrêtera pendant 25 secondes.
De nombreuses commandes nécessitent que vous fournissiez des paramètres dans un ordre spécifique, mais sleep
est très indulgent. Vous pouvez les fournir dans n’importe quel ordre et sleep
aura un sens hors d’eux. Vous pouvez également fournir un nombre à virgule flottante comme paramètre. Par exemple, 0,5 h est un moyen valide d’indiquer que vous souhaitez sleep
faire une pause d’une demi-heure.
Toutes les commandes suivantes (de plus en plus excentriques) indiquent sleep
pour faire une pause de 10 secondes.
sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
Utilisation du mode veille pour faire une pause avant une commande
le sleep
La commande peut être utilisée pour donner une pause avant l’exécution d’une commande. Cette commande ferait une pause de 15 secondes, puis émettrait un bip.
sleep 15 && echo -en ' 07'
Utilisation du mode veille pour faire une pause entre deux commandes
Vous pouvez utiliser sleep
pour donner une pause entre deux commandes. Cette commande répertorie les fichiers dans votre répertoire Documents, fait une pause de cinq secondes, puis change le répertoire de travail actuel en votre répertoire personnel:
ls -R ~/Documents && sleep 5 && cd ~
Utilisation du mode veille pour interrompre l’exécution d’un script
Vous pouvez utiliser le sleep
commande dans les scripts shell pour suspendre l’exécution du script pendant une durée précise. En règle générale, vous feriez cela pour laisser suffisamment de temps au processus pour se terminer avant que le script continue son traitement. Vous pouvez également l’utiliser pour limiter le taux des requêtes qu’un script envoie à une autre ressource.
Pour démontrer exactement cela, voici un script qui appelle un service Web Google à l’aide de curl
. Lorsque vous interrogez le service Web avec le ISBN numéro d’un livre, il répond avec un vidage des données JSON concernant ce livre. Nous pouvons analyser ces données en les passant par le jq
utilitaire pour récupérer le titre du livre. Pour que le script ne sollicite pas le service Web, il dort une seconde entre les requêtes Web.
Créez un fichier contenant le texte suivant et enregistrez-le sous check_book.sh
.
#!/bin/bash for book in `cat $1` do echo $book":" curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | .[] | .volumeInfo.title' echo "" sleep 1 done echo "All done."
Tapez la commande suivante pour définir les autorisations d’exécution et rendre le script exécutable.
chmod +x check_book.sh
Le script nécessite le curl
et jq
utilitaires. Utilisation apt-get
pour installer ces paquets sur votre système si vous utilisez Ubuntu ou une autre distribution basée sur Debian. Sur les autres distributions Linux, utilisez plutôt l’outil de gestion des packages de votre distribution Linux.
sudo apt-get install curl
sudo apt-get install jq
Créez un fichier texte contenant les numéros suivants et enregistrez-le sous books.txt
.
9781565921276 9781874416685 9781565921672 9780521431088 9781491941591
Exécutez le check_book.sh
script et passer le books.txt
fichier comme paramètre.
./check_book.sh books.txt
Les demandes sont adressées au service Web de Google à intervalles d’une seconde. Le titre du livre apparaîtra peu de temps après la requête de chaque numéro ISBN.
C’est tout ce qu’il y a à sleep
. Le fonctionnement interne de la check_book.sh
script sortent du cadre de cet article. Le script a été choisi uniquement pour illustrer une utilisation valide du sleep
commander. Si vous souhaitez en savoir plus sur les deux principaux composants du script, reportez-vous au curl
page du projet et le jq
manuel en ligne.