in

Comment suspendre un script bash avec la commande de veille Linux

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.

Aucune sortie visible de la commande sleep 5

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 ~

Sortie de deux commandes séparées par sleep

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

Sortie du script shell check_book.sh

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.

Laisser un commentaire

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

Comment localiser votre Apple Watch perdue

Comment localiser votre Apple Watch perdue

Comment laisser quelqu'un d'autre utiliser votre ordinateur sans lui donner accès à toutes vos affaires

Comment laisser quelqu’un d’autre utiliser votre ordinateur sans lui donner accès à toutes vos affaires