GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel sur l'utilisation de la commande Timeout sous Linux

Une commande timeout est un utilitaire de ligne de commande qui exécute une commande spécifiée et l'arrête si elle est toujours en cours d'exécution après un certain laps de temps. En d'autres termes, la commande timeout vous permet d'exécuter la commande avec un délai d'attente que vous spécifiez. La commande timeout fait partie du package d'utilitaires de base GNU qui est installé sur presque toutes les distributions Linux.

Cette commande est utile lorsque vous souhaitez exécuter une commande qui n'a pas d'option de délai d'attente intégrée ou arrêter un processus après un certain temps d'exécution.

Dans cet article, nous allons vous expliquer comment utiliser les commandes timeout dans le terminal Linux.

Comment utiliser la commande Timeout

La syntaxe de la commande timeout est la suivante :

timeout [OPTIONS] DURATION COMMAND [ARG]…

DURATION peut être un entier positif ou un nombre à virgule flottante, suivi d'un suffixe d'unité facultatif :

  • s – secondes (secondes) (c'est l'option par défaut)
  • m – minutes (minutes)
  • h – heures (heures)
  • d – jours (jours)

Lorsqu'aucune unité n'est utilisée, la valeur par défaut est la seconde. Si la durée est définie sur zéro, le timeout associé est désactivé.

Les options de commande doivent être fournies avant l'argument.

Voici quelques exemples de base montrant comment utiliser la commande timeout :

  • Arrêter la commande ping après cinq secondes ::timeout 5 ping 8.8.8.8
  • Arrêtez la commande après cinq minutes :timeout 5m ping 8.8.8.8
  • Arrêtez la commande après une minute et six secondes :timeout 1.1m ping 8.8.8.8

Si vous souhaitez exécuter une commande nécessitant des privilèges tels que tcpdump , ajoutez un préfixe sudo avant la commande timeout :

sudo timeout 300 tcpdump -n -w data.pcap

Envoi de signaux spécifiques

Si aucun signal n'est donné, il timeout utilisera le signal SIGTERM pour la commande spécifiée lorsque le délai d'attente sera atteint. Vous pouvez spécifier le signal à utiliser en utilisant le -s ( --signal ) .

Par exemple, pour envoyer SIGKILL à une commande ping au bout d'une minute, vous pouvez utiliser la commande :

sudo timeout -s SIGKILL ping 8.8.8.8

Le signal peut être spécifié par son nom comme SIGKILL ou un nombre comme 9 . La commande suivante est identique à la précédente :

sudo timeout -s 9 ping 8.8.8.8

Pour obtenir une liste de tous les signaux disponibles, utilisez la commande kill -l :

kill -l

Tuez le processus bloqué

SIGTERM , le signal par défaut envoyé lorsque le délai d'attente est dépassé peut être intercepté ou ignoré par certains processus. Dans cette situation, le processus continue de s'exécuter après l'envoi du signal de fin.

Pour vous assurer que la commande surveillée s'est arrêtée, utilisez l'option -k ( --kill-after ) suivi d'une période. Lorsque cette option est utilisée après que le délai d'attente donné est atteint, la commande timeout envoie un signal SIGKILL au programme correspondant à l'entrée de l'utilisateur.

Dans l'exemple suivant, il timeout exécute la commande pendant une minute, et si elle n'est pas terminée, elle "tuera" le programme au bout de dix secondes :

sudo timeout -k 10 1m ping 8.8.8.8
timeout -k “./test.sh”

Le processus sera tué une fois le délai imparti atteint, même s'il est bloqué.

Maintenir le statut de sortie

timeout renverra 124 lorsque le délai est atteint. Sinon, la commande timeout renverra l'état de sortie de la commande gérée.

Pour renvoyer l'état de sortie de la commande même lorsque le délai d'attente est atteint, utilisez l'option --preserve-status :

timeout --preserve-status 5 ping 8.8.8.8

Exécuter des commandes au premier plan

Par défaut, il timeout exécute une commande en arrière-plan. Si vous souhaitez exécuter la commande au premier plan, utilisez l'option --foreground :

timeout --foreground 5m ./script.sh

Cette option est utile lorsque vous souhaitez exécuter des commandes interactives qui nécessitent une entrée de l'utilisateur.

Conclusion

La commande est timeout utilisé pour exécuter une certaine commande avec une limite de temps selon la volonté de l'utilisateur.

Commandes timeout sont des commandes simples qui n'ont pas beaucoup d'options. Habituellement, vous utiliserez une commande timeout avec seulement deux arguments, durée et la commande qui se produira.


Linux
  1. Une introduction à l'utilisation de tcpdump sur la ligne de commande Linux

  2. Maîtrisez la commande Linux ls

  3. Utilisation de la force sur la ligne de commande Linux

  4. Introduction à la commande alternatives sous Linux

  5. La commande locate sous Linux

La commande timer sous Linux

Exécutez des processus d'arrière-plan sous Linux à l'aide de la commande Screen

La commande Linux curl

Tutoriel sur l'utilisation de la dernière commande dans le terminal Linux

Utilisation de la commande Watch sous Linux

Utilisation de la commande tr sous Linux pour jouer avec des personnages