Com limitar el temps i l'ús de memòria dels processos a Linux
L'script de temps d'espera és un programa útil de control de recursos per limitar el temps i el consum de memòria dels processos a Linux. Us permet executar programes sota control i fer complir els límits de temps i memòria, finalitzant el programa en violar aquests paràmetres.
No cal instal·lació, simplement executeu una ordre juntament amb els seus arguments mitjançant el programa de temps d'espera i controlarà la memòria i el consum de temps de l'ordre, interrompent el procés si surt dels límits i us notificarà amb el missatge predefinit.
Per executar aquest script, heu de tenir Perl 5 instal·lat al vostre sistema Linux i el sistema de fitxers /proc muntat.
Per comprovar la versió instal·lada de Perl al vostre sistema Linux, executeu l'ordre següent.
$ perl -v
A continuació, cloneu el dipòsit de temps d'espera al vostre sistema mitjançant l'ordre habitual de Linux.
$ cd ~/bin $ git clone https://github.com/pshved/timeout.git $ cd timeout
Vegem ara com funciona l'script de temps d'espera.
Aquest primer exemple mostra com limitar l'ús de memòria d'un procés a 100 M de memòria virtual, utilitzant la marca -m
. La unitat predeterminada per a la memòria és en kilobytes.
Aquí, l'ordre stress-ng executa 4 factors d'estrès de memòria virtual (VMS) que es combinen per utilitzar el 40% de la memòria disponible durant 10 minuts. Així, cada factor estressant utilitza el 10% de la memòria disponible.
$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Tenint en compte la sortida de l'ordre de temps d'espera anterior, els processos de treball de stress-ng es van acabar després de només 1,16 segons. Això es deu al fet que el consum de memòria combinat del VMS (438660 kilobytes) és superior a l'ús de memòria virtual permès per a stress-ng i els seus processos fills.
Per habilitar la limitació de temps del procés, utilitzeu la marca -t
tal com es mostra.
$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
A l'exemple anterior, quan el temps de stress-ng CPU+SYS supera el valor definit de 4, els processos de treball s'eliminen.
També podeu limitar la memòria i el temps alhora de la següent manera.
$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
El temps d'espera també admet algunes opcions avançades com ara --detect-hangups
, que permet la detecció de penjades.
$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Podeu controlar el límit de memòria RSS (mida del conjunt del resident) mitjançant l'interruptor --memlimit-rss
o -s
.
$ ./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
A més, per retornar el codi de sortida o senyal+128 d'un procés, utilitzeu l'opció --confess
o -c
tal com es mostra.
$ ./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
Per obtenir més informació i exemple d'ús, consulteu el repositori de Github de temps d'espera: https://github.com/pshved/timeout.
També podeu trobar els següents articles relacionats igualment útils:
- Com trobar els 15 processos principals per ús de memòria amb superior en mode per lots
- CPUTool: limita i controla l'ús de la CPU de qualsevol procés a Linux
- Com limitar l'ús de la CPU d'un procés a Linux amb l'eina CPULimit
L'script de temps d'espera és un programa de control de recursos senzill que restringeix essencialment el temps i el consum de memòria dels processos a Linux. Podeu donar-nos comentaris sobre l'script de temps d'espera mitjançant el formulari de comentaris a continuació.