Commande Linux timeout expliquée pour les débutants (avec des exemples)

Parfois, lorsque tu exécutes une commande dans Linux, tu peux vouloir l’exécuter pendant une durée déterminée. Il existe un utilitaire de ligne de commande – timeout – qui a été spécialement conçu à cet effet. Dans cet article, nous allons aborder les bases de cette commande à l’aide d’exemples faciles à comprendre.

Mais avant cela, il est bon de mentionner que tous les exemples de ce tutoriel ont été testés sur une machine Ubuntu 18.04 LTS.

Commande Linux timeout

Comme son nom l’indique, la commande timeout de Linux te permet d’exécuter une commande avec une limite de temps. Voici sa syntaxe :

timeout [OPTION] DURATION COMMAND [ARG]...

Et voici comment la page de manuel de l’outil l’explique :

timeout - run a command with a time limit
Start COMMAND, and kill it if still running after DURATION

Voici quelques exemples de type Q&R qui devraient te donner une meilleure idée du fonctionnement de cet outil.

Q1. Comment utiliser la commande timeout ?

L’utilisation de base est assez simple – il suffit d’exécuter ‘timeout’ en spécifiant en entrée une valeur de délai (considérée en secondes) ainsi que la commande que tu veux exécuter.

Par exemple, si tu veux faire expirer une commande ping après 5 secondes, voici comment utiliser timeout dans ce cas.

timeout 5 ping google.com

Q2. Comment obtenir l’état de sortie de la commande dans la sortie ?

Par défaut, si la commande timeout réussit, elle renvoie 124 comme statut de sortie. Voici un exemple :

Dans le premier cas, j’ai laissé la commande de temporisation s’exécuter avec succès, et comme tu peux le voir, l’état de sortie était 124. Cependant, lors de la deuxième exécution, j’ai tué de force la commande en utilisant Ctrl+C, et dans ce cas, l’état de sortie était 0.

Mais si tu veux que timeout renvoie le statut de la commande d’entrée même si timeout s’exécute avec succès, tu dois utiliser l’option de ligne de commande –preserve-status.

Par exemple :

timeout --preserve-status 5 ping google.com

Q3. Comment modifier le signal que timeout envoie ?

Inutile de deviner que timeout fonctionne en envoyant un signal à la commande d’entrée pour que cette dernière arrête de s’exécuter à l’approche de la date limite. Par défaut,SIGTERM est utilisé par la commande.

Cependant, si tu le souhaites, tu peux changer le signal envoyé par timeout. Pour cela, tu devras utiliser l’option de ligne de commande -s et spécifier en entrée le signal que tu veux que timeout envoie.

Par exemple :

timeout -s SIGKILL [COMMAND]

Pour récupérer la liste des signaux disponibles que tu peux envoyer, exécute la commande suivante :

kill -l

Q4. Comment faire pour que timeout envoie automatiquement le signal KILL ?

Parfois, tu peux rencontrer une commande d’entrée qui continue à s’exécuter même après que timeout ait envoyé le signal initial. Pour ce genre de cas, timeout propose une option ‘–kill-after’.

Voici comment la page de manuel l’explique :

-k, --kill-after=DURATION

              also send a KILL signal if COMMAND is still running

              this long after the initial signal was sent

Comme tu peux le voir, tu dois indiquer une durée pour que timeout sache après combien de temps ce signal doit être envoyé.

Conclusion

Selon le type de travail que tu fais, la commande timeout peut s’avérer être un outil très pratique. Dans ce tutoriel, nous avons abordé la majorité des options offertes par cet utilitaire. Une fois que tu auras fini de les pratiquer, tu pourras en apprendre davantage sur timeout en te rendant sur sa page de manuel.

Vous aimerez aussi...