Heim >System-Tutorial >LINUX >Beherrschen Sie diese Methoden, um auf einfache Weise Zeitlimits in Ihrem Linux-System festzulegen
Angesichts des beschleunigten Arbeits- und Lebenstempos müssen wir in Linux-Systemen oft Zeitlimits festlegen, um unser Verhalten zu kontrollieren. Ob es darum geht, die Benutzeranmeldezeit oder die Prozesslaufzeit zu begrenzen, Linux-Systeme bieten eine Vielzahl von Methoden, um diesen Zweck zu erreichen. Wissen Sie also, wie man im Linux-System ein Zeitlimit festlegt? In diesem Artikel werden einige gängige Methoden vorgestellt, damit Sie sie leicht beherrschen können.
timeout ist ein Befehlszeilenprogramm, das einen bestimmten Befehl ausführt und ihn beendet, wenn er nach einer bestimmten Zeitspanne immer noch ausgeführt wird. Der Timeout-Befehl ist Teil des GNU-Core-Dienstprogrammpakets, das in fast allen Linux-Distributionen installiert ist
Anwendung
Grammatikformat:
timeout [OPTION] DURATION COMMAND [ARG]...
DURATION kann eine positive Ganzzahl oder eine Gleitkommazahl sein, gefolgt von einem optionalen Suffix:
Wenn Sie keine Einheit hinzufügen, ist die Standardeinstellung Sekunden. Wenn DURATION 0 ist, ist das zugehörige Timeout deaktiviert.
Instanzen
Ping-Vorgang nach 5 Sekunden beenden:
[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
Ping-Vorgang nach 5 Minuten beenden:
[root@localhost ~]# timeout 5m ping www.baidu.com
Ping-Vorgang nach 1 Tag beenden:
[root@localhost ~]# timeout 1d ping www.baidu.com
Ping-Vorgang nach 2,5 Sekunden beenden:
[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
Spezifiziertes Signal senden
Wenn kein Signal gegeben wird, sendet Timeout ein SIGTERM-Signal an den verwalteten Befehl, wenn das Zeitlimit erreicht ist. Das zu sendende Signal kann mit der Option -s (-signal) angegeben werden.
SIGKILL-Signal an Ping-Befehl senden, nach 5 Sekunden beenden:
[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
Einem Signal kann sein Name oder seine Sequenznummer zugewiesen werden. Die unten verwendete SIGKILL-Seriennummer beendet den Vorgang nach 5 Sekunden:
[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
Um alle verfügbaren Signale anzuzeigen, verwenden Sie den Befehl kill -l, um alle Signale anzuzeigen.
[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 ~]#
Stoppen Sie den festgefahrenen Prozess
SIGTERM, das Standardsignal, das bei Überschreitung des Zeitlimits gesendet wird, kann von einigen Prozessen abgefangen oder ignoriert werden. In diesem Fall läuft der Prozess nach dem Senden des Beendigungssignals weiter.
Um sicherzustellen, dass der ausgeführte Befehl beendet wird, verwenden Sie die Option -k (–kill after) gefolgt von einer Zeitangabe. Es wird zwangsweise beendet, wenn das vorgegebene Zeitlimit erreicht ist.
Im folgenden Beispiel läuft der Timeout-Befehl eine Minute lang und beendet den Befehl nach 10 Sekunden, wenn er nicht beendet wird:
[root@localhost ~]# timeout -k 10s 1m sh test.sh
Laufen im Vordergrund
Standardmäßig führt Timeout verwaltete Befehle im Hintergrund aus. Wenn Sie den Befehl im Vordergrund ausführen möchten, verwenden Sie die Option --foreground:
[root@localhost ~]# timeout --foreground 5m ./script.sh
Zusammenfassung
In diesem Artikel werden mehrere gängige Methoden zum Festlegen von Zeitlimits in Linux-Systemen vorgestellt, darunter die Verwendung des Befehls ulimit, die Verwendung des Moduls pam_time, die Verwendung geplanter Cron-Aufgaben usw. Durch das Verständnis dieser Methoden können Sie das Benutzerverhalten besser steuern, die Systemleistung optimieren, Ressourcenverschwendung verhindern usw. Ich hoffe, dass die Leser anhand der tatsächlichen Bedürfnisse eine für sie geeignete Methode auswählen und anwenden können.
Das obige ist der detaillierte Inhalt vonBeherrschen Sie diese Methoden, um auf einfache Weise Zeitlimits in Ihrem Linux-System festzulegen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!