GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter une commande pendant une durée spécifique sous Linux

L'autre jour, je transférais un fichier volumineux à l'aide de rsync vers un autre système de mon réseau local. Comme il s'agit d'un très gros fichier, il a fallu environ 20 minutes pour le terminer. Je ne veux pas attendre plus longtemps, et je ne veux pas non plus terminer manuellement le processus en appuyant sur CTRL + C. Je me demandais simplement s'il pouvait y avoir des moyens simples d'exécuter une commande pendant un temps spécifique et de la tuer automatiquement une fois le temps écoulé dans les systèmes d'exploitation de type Unix - d'où ce post. Continuez à lire.

Exécuter une commande pendant une durée spécifique sous Linux

Nous pouvons le faire de deux manières.

Méthode 1 - Utilisation de la commande "timeout"

La méthode la plus courante consiste à utiliser timeout commande à cet effet. Pour ceux qui ne le savent pas, la commande timeout limitera effectivement le temps d'exécution absolu d'un processus. La commande timeout fait partie du package GNU coreutils, elle est donc préinstallée sur tous les systèmes GNU/Linux.

Supposons que vous souhaitiez exécuter une commande uniquement pendant un certain temps, puis la tuer automatiquement une fois le temps écoulé. Pour ce faire, nous utilisons :

$ timeout <time-limit-interval> <command>

Par exemple, la commande suivante se terminera après 10 secondes.

$ timeout 10s tail -f /var/log/pacman.log

Vous n'avez pas non plus besoin de spécifier le suffixe "s" pour les secondes. La commande suivante est la même que ci-dessus.

$ timeout 10 tail -f /var/log/pacman.log

Les autres suffixes disponibles sont :

  • je suis pendant quelques minutes,
  • 'h' pendant des heures
  • 'd' pendant des jours.

Si vous exécutez ce tail -f /var/log/pacman.log commande, elle continuera à s'exécuter jusqu'à ce que vous la terminiez manuellement en appuyant sur CTRL+C. Cependant, si vous l'exécutez avec timeout commande, il sera tué automatiquement après l'intervalle de temps donné.

Juste au cas où si la commande est toujours en cours d'exécution même après l'expiration du délai, vous pouvez envoyer un kill signal comme ci-dessous.

$ timeout -k 20 10 tail -f /var/log/pacman.log

Dans ce cas, si la commande tail est toujours en cours d'exécution après 10 secondes, la commande timeout lui enverra un signal d'arrêt après 20 secondes et y mettra fin.

La commande Tmeout peut être particulièrement utile lors du dépannage de problèmes matériels. Par exemple, exécutez la commande suivante pour afficher tous les messages du tampon circulaire du noyau, mais pendant seulement 10 secondes.

$ timeout 10 dmesg -w

Pour plus de détails, consultez les pages de manuel.

$ man timeout

Parfois, un programme particulier peut prendre beaucoup de temps à se terminer et finir par geler votre système. Dans de tels cas, vous pouvez utiliser cette astuce pour mettre fin au processus automatiquement après un certain temps.

Pensez également à utiliser Cpulimit , une application simple pour limiter l'utilisation du processeur d'un processus. Pour plus de détails, consultez le lien suivant.

  • Comment limiter l'utilisation du processeur d'un processus sous Linux

Méthode 2 - Utilisation du programme "Timelimit"

L'utilitaire Timelimit exécute une commande donnée avec les arguments fournis et termine le processus engendré après un temps donné avec un signal donné. Tout d'abord, il passera l'avertissement signal puis après le délai d'attente, il enverra le kill signal.

Contrairement à l'utilitaire de temporisation, la limite de temps a plus d'options. Vous pouvez passer un certain nombre d'arguments tels que killsig, warnsig, killtime, warntime etc.

Il est disponible dans les dépôts par défaut des systèmes basés sur Debian. Vous pouvez donc l'installer à l'aide de la commande :

$ sudo apt-get install timelimit

Pour les systèmes basés sur Arch, il est disponible dans l'AUR. Ainsi, vous pouvez l'installer à l'aide de n'importe quel programme d'assistance AUR tel que Pacaur , Emballeur , Oui , Yaourt etc.

Pour les autres distributions, téléchargez la source d'ici et installez-le manuellement.

Après avoir installé le programme Timelimit, exécutez la commande suivante pendant un temps spécifique, par exemple 10 secondes :

$ timelimit -t10 tail -f /var/log/pacman.log

Si vous exécutez timelimit sans aucun argument, il utilisera les valeurs par défaut :warntime=3600 seconds , warnsig=15 , killtime=120 , killsig=9 .

Pour plus de détails, reportez-vous aux pages de manuel et au site Web du projet indiqués à la fin de ce guide.

$ man timelimit

Et c'est tout pour aujourd'hui. J'espère que cela a été utile. Plus de bonnes choses à venir. Restez à l'écoute !

Santé !


Linux
  1. Comment utiliser la commande Linux Touch + Exemples

  2. Comment utiliser la commande Su sous Linux

  3. DSH - Exécutez une commande Linux sur plusieurs hôtes à la fois

  4. linux :comment exécuter une commande dans un répertoire donné

  5. 'tail -f' pendant une durée spécifique

Comment exécuter des commandes Linux en arrière-plan

Commande de temporisation sous Linux

Dernière commande sous Linux

Explication de la commande Linux timeout pour les débutants (avec exemples)

Comment exécuter Windows 95 sous Linux

Comment exécuter une commande périodiquement sous Linux à l'aide de Watch