Avec la commande timeout, vous pouvez définir une limite de temps pour l'exécution d'autres commandes et programmes. Si le programme s'exécute plus longtemps que la limite définie, le délai d'attente le tue.
Ça sonne bien, non ? Voyons comment utiliser cette commande.
Utilisation de la commande timeout sous Linux
Voici la syntaxe de la commande timeout :
timeout [options] seconds command
Comme vous pouvez le voir, le temps est toujours défini en secondes ici.
Prenons un exemple avec la commande sleep. La commande de sommeil "dort" essentiellement jusqu'au temps imparti. Ce qui signifie qu'il attend juste ce nombre de secondes.
timeout 4 sleep 10
Donc, si j'utilise sleep 10, le shell attend 10 secondes. Mais si je mets un délai d'attente de 4 secondes, la commande sleep qui devait s'exécuter pendant 10 secondes se termine en seulement 4 secondes.
Par défaut, la commande timeout envoie SIGTERM pour tuer poliment le programme en cours d'exécution. Vous pouvez envoyer un autre signal en utilisant l'option -s.
Vous pouvez voir tous les signaux kill sous Linux avec la commande kill -l. Supposons que vous souhaitiez envoyer le signal SIGKILL (kill -9) au lieu du signal par défaut, SIGTERM. Vous pouvez utiliser quelque chose comme ceci :
timeout -s SIGKILL 3 sleep 30
Vous pouvez également utiliser KILL ou 9 (le numéro de SIGKILL indiqué dans kill -l) au lieu de SIGKILL.
Dur tuer un programme n'est pas une bonne chose à faire. Mais un programme peut ignorer le SIGTERM.
Une meilleure façon de gérer est d'envoyer le signal d'arrêt uniquement lorsque votre demande d'arrêt initiale est ignorée par le programme en cours d'exécution.
Donc, disons que vous voulez exécuter un programme pas plus de 5 secondes. Mais si le programme en cours d'exécution refuse de s'arrêter, vous envoyez le signal d'arrêt 3 secondes après avoir envoyé le SIGTERM par défaut. Voici ce que vous pouvez utiliser :
timeout -k 3 5 program
Cela signifie que votre programme ne durera pas plus de 8 secondes. Vous pouvez utiliser la commande time pour vérifier combien de temps le programme a réellement fonctionné.
Existe-t-il une utilisation pratique de la commande timeout ?
Cela ressemble à l'une de ces commandes Linux obscures que vous n'utiliserez peut-être pas tous les jours. Cela pourrait cependant être utile dans certaines situations particulières.
Par exemple, si vous avez commencé à jouer à un jeu de terminal pour rafraîchir un peu votre humeur, mais que vous avez perdu la notion du temps et que vous avez continué à jouer bien plus que le temps souhaité.
La commande timeout est utile dans de tels cas.
Restez à l'écoute pour en savoir plus sur les commandes Linux. Abonnez-vous à la newsletter pour recevoir régulièrement des trucs et astuces.