Comment utiliser la commande Linux Sleep pour suspendre un script BASH

Ce qu'il faut savoir

  • Utilisez le dormir commande plus une heure; s=secondes, m=minutes, h=les heures, ou =jours (par exemple, dormir 5s met le script en pause pendant 5 secondes).
  • Utilisation l'homme dort pour plus.

Cet article explique comment utiliser la commande Linux sleep pour mettre en pause un script bash, entre autres. En soi, la commande sleep n'est pas très utile. Cependant, dans le cadre d'un script, il peut être utilisé de plusieurs manières. Par exemple, vous pouvez l'utiliser pour suspendre le script avant de réessayer une commande qui a échoué la première fois.

Personne exécutant la commande Linux sleep pendant 20 secondes sur un ordinateur portable
Kaley McKean / Lifewire

Un exemple d'utilisation de la commande Sleep

Imaginez que vous ayez un script qui traite les fichiers téléchargés à partir d'un autre serveur. Le script ne doit pas démarrer le processus de copie tant que tous les fichiers ne sont pas téléchargés. Le processus de téléchargement est effectué par un script distinct qui s'exécute avant le vôtre.

Le script qui copie les fichiers peut contenir une boucle pour tester si tous les fichiers ont été téléchargés (il le fait en vérifiant si 50 fichiers sont trouvés avant de démarrer le processus de copie).

Il ne sert à rien de tester constamment le script car cela utilise du temps processeur. Au lieu de cela, vous pouvez faire une pause de quelques minutes entre chaque test avant de réessayer. La commande sleep est parfaite dans de telles circonstances.

Comment utiliser la commande Sleep

Pour utiliser la commande Linux sleep, saisissez ce qui suit dans la fenêtre du terminal:

dormir 5s

La commande ci-dessus met le terminal en pause pendant 5 secondes avant de revenir à la ligne de commande.

La commande sleep requiert le mot-clé dormir, suivi du nombre que vous souhaitez mettre en pause et de l'unité de mesure.

Vous pouvez spécifier le délai en secondes, minutes, heures ou jours.

  • s: Secondes
  • m: Minutes
  • h: Les heures
  • : Jours

Lorsqu'il s'agit de suspendre un script pendant des jours, utilisez une tâche cron pour exécuter le script à intervalles réguliers, au lieu d'exécuter un script en arrière-plan pendant des jours.

Une tâche cron est une commande ou un script Linux que vous pouvez programmer pour s'exécuter à une heure ou un jour défini. Ils sont utiles pour répéter des tâches sur une longue période de temps.

Le nombre de l'intervalle de commande de veille ne doit pas nécessairement être un nombre entier. Vous pouvez également utiliser des nombres à virgule flottante.

Commande de veille Linux

Par exemple, la syntaxe suivante inclut une fraction de seconde:

dormir 3,5 s

Un exemple d'utilisation de la commande Sleep

Le script suivant montre comment utiliser la commande sleep pour créer un compte à rebours basé sur un terminal:

#!/bin/bash
x=10
tandis que [ $x -gt 0 ]
faire
dormir 1s
dégager
echo "$x secondes jusqu'au décollage"
x=$(( $x - 1 ))
terminé

Voici comment fonctionne ce script:

  • Le script définit la variable x sur 10.
  • La boucle while continue d'itérer tant que la valeur de x est supérieure à zéro.
  • La commande sleep met le script en pause pendant 1 seconde à chaque tour de la boucle.
  • Le reste du script efface l'écran à chaque itération, affiche le message « x secondes jusqu'au décollage » et soustrait 1 à la valeur de x.
Linux dormir dans le script

Sans la commande sleep, le script zoomerait et les messages s'afficheraient trop rapidement.

Comment utiliser les commutateurs de commande de veille

La commande sleep n'a que quelques commutateurs.

Les --aider switch affiche le fichier d'aide pour la commande sleep. Vous pouvez obtenir la même chose en utilisant la commande man comme suit:

l'homme dort. 

Les --version Le commutateur affiche la version de la commande sleep installée sur le système.

Les informations renvoyées par le commutateur --version sont les suivantes:

  • Numéro de version
  • Détails du droit d'auteur
  • Licence
  • Auteurs

Suspendre les commandes du terminal avec veille

Une autre bonne utilisation de la commande sleep consiste à mettre en pause les commandes que vous tapez dans la fenêtre du terminal.

Si vous le souhaitez, vous pouvez taper deux commandes d'affilée, en attendant que la première se termine avant de taper la seconde.

Cependant, une approche plus rapide consiste à taper les deux commandes sur une seule ligne, avec une commande sleep entre chaque commande:

$ cd /monrépertoire/ && sleep 3 && ls. 

Comment fonctionne cette commande:

  • Les cd /monrépertoire/ la commande change le répertoire.
  • Les dormir 3 La commande attend trois secondes que la commande cd se termine.
  • Les ls La commande s'exécute et affiche le contenu du répertoire.

Pour un exemple simple comme celui-ci, la commande sleep ne fait gagner qu'un peu de temps. Cependant, si vous avez une longue liste de commandes, la possibilité de saisir les commandes sur une seule ligne permet de gagner du temps.