Maison  >  Article  >  Tutoriel système  >  Maîtrisez ces méthodes pour définir facilement des limites de temps dans votre système Linux

Maîtrisez ces méthodes pour définir facilement des limites de temps dans votre système Linux

WBOY
WBOYavant
2024-02-11 17:48:15676parcourir

Avec le rythme accéléré du travail et de la vie, nous devons souvent fixer des limites de temps dans les systèmes Linux pour contrôler notre comportement. Qu'il s'agisse de limiter le temps de connexion des utilisateurs ou le temps d'exécution des processus, les systèmes Linux proposent diverses méthodes pour atteindre cet objectif. Alors, savez-vous comment définir une limite de temps sur le système Linux ? Cet article présentera plusieurs méthodes courantes afin que vous puissiez facilement les maîtriser.

timeout est un utilitaire de ligne de commande qui exécute une commande spécifiée et la termine si elle est toujours en cours d'exécution après une période de temps donnée. La commande timeout fait partie du package utilitaire principal GNU, installé dans presque toutes les distributions Linux

Comment utiliser

Format de grammaire :

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

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

  • s – secondes (par défaut)
  • m – minutes
  • h – heures
  • j – jour

Si vous n’ajoutez aucune unité, la valeur par défaut est les secondes. Si DURATION est 0, le délai d'attente associé est désactivé.

Instances

Terminez l'opération ping après 5 secondes :

[root@localhost ~]# timeout 5 ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=55 time=16.3 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=55 time=16.0 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=55 time=16.7 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=55 time=16.0 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=5 ttl=55 time=17.6 ms

Maîtrisez ces méthodes pour définir facilement des limites de temps dans votre système Linux
Terminez l'opération ping après 5 minutes :

[root@localhost ~]# timeout 5m ping www.baidu.com

Terminer l'opération ping après 1 jour :

[root@localhost ~]# timeout 1d ping www.baidu.com

Terminez l'opération ping après 2,5 secondes :

[root@localhost ~]# timeout 2.5s ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55 time=14.9 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=15.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=55 time=15.6 ms
Maîtrisez ces méthodes pour définir facilement des limites de temps dans votre système Linux

Envoyer le signal spécifié

Si aucun signal n'est donné, timeout envoie un signal SIGTERM à la commande gérée lorsque le délai est atteint. Le signal à envoyer peut être spécifié à l'aide de l'option -s (-signal).

Envoyez le signal SIGKILL à la commande ping, terminez après 5 secondes :

[root@localhost ~]# sudo timeout -s SIGKILL 5s ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=55 time=17.2 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=55 time=16.6 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=55 time=16.7 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=55 time=16.2 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=5 ttl=55 time=16.7 ms
Killed

Maîtrisez ces méthodes pour définir facilement des limites de temps dans votre système Linux
Un signal peut se voir attribuer son nom ou son numéro de séquence. Le numéro de série SIGKILL utilisé ci-dessous mettra fin à l'opération après 5 secondes :

[root@localhost ~]# sudo timeout -s 9 5s ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55 time=15.5 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=16.3 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=55 time=14.9 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=55 time=16.0 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=5 ttl=55 time=22.0 ms
Killed

Maîtrisez ces méthodes pour définir facilement des limites de temps dans votre système Linux
Pour voir tous les signaux disponibles, utilisez la commande kill -l pour afficher tous les signaux.

[root@localhost ~]# kill -l
 1) SIGHUP  2) SIGINT  3) SIGQUIT  4) SIGILL  5) SIGTRAP
 6) SIGABRT  7) SIGBUS  8) SIGFPE  9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX 
[root@localhost ~]#
Maîtrisez ces méthodes pour définir facilement des limites de temps dans votre système Linux

Arrêtez le processus bloqué

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

Pour vous assurer que la commande exécutée est terminée, utilisez l'option -k (–kill after) suivie d'une heure. Il sera forcé de se terminer lorsque le délai imparti sera atteint.

Dans l'exemple ci-dessous, la commande timeout s'exécute pendant une minute et mettra fin à la commande après 10 secondes si elle ne se termine pas :

[root@localhost ~]# timeout -k 10s 1m sh test.sh

Courir au premier plan

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

[root@localhost ~]# timeout --foreground 5m ./script.sh

Résumé

Cet article présente plusieurs méthodes courantes pour définir des limites de temps dans les systèmes Linux, notamment l'utilisation de la commande ulimit, l'utilisation du module pam_time, l'utilisation des tâches planifiées cron, etc. En comprenant ces méthodes, vous pouvez mieux contrôler le comportement des utilisateurs, optimiser les performances du système, éviter le gaspillage de ressources, etc. J'espère que les lecteurs pourront choisir une méthode qui leur convient en fonction de leurs besoins réels et l'appliquer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer