Lo script timeout è un utile programma di monitoraggio delle risorse per limitare il tempo e il consumo di memoria dei processi in Linux. Consente di eseguire programmi sotto controllo e imporre limiti di tempo e memoria, terminando il programma in caso di violazione di questi parametri.
Non è necessaria alcuna installazione, basta eseguire un comando insieme ai suoi argomenti utilizzando il programma timeout e questo monitorerà il consumo di memoria e tempo del comando, interrompendo il processo se supera i limiti e notificandoti con il messaggio predefinito.
Per eseguire questo script, è necessario avere Perl 5 installato sul proprio sistema Linux e il filesystem /proc montato.
Per controllare la versione installata di Perl sul tuo sistema Linux, esegui il seguente comando.
$ perl -v

Successivamente, clona il repository timeout sul tuo sistema utilizzando il comando git, quindi spostati nel repository locale utilizzando il comando cd e invocalo come un comando Linux usuale.
$ cd ~/bin $ git clone https://github.com/pshved/timeout.git $ cd timeout
Ora vediamo come funziona lo script timeout.
Limite di Memoria Base (100M di Memoria Virtuale):
Questo primo esempio mostra come limitare l’utilizzo della memoria di un processo a 100M di memoria virtuale, utilizzando la bandiera -m
. L’unità predefinita per la memoria è in kilobyte.
Qui, il comando stress-ng esegue 4 stressori di memoria virtuale (VMS) che si combinano per utilizzare il 40% della memoria disponibile per 10 minuti. Quindi ogni stressore utilizza il 10% della memoria disponibile.
$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Tenendo conto dell’output del comando timeout sopra, i processi lavoratore stress-ng sono stati terminati dopo solo 1,16 secondi. Questo perché il consumo di memoria combinato dei VMS (438660 kilobyte) è maggiore del consumo di memoria virtuale consentito per stress-ng e i suoi processi figlio.
Limite di Tempo Base del Processo:
Per abilitare il limite di tempo del processo, utilizzare la bandiera -t
come mostrato.
$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

Nell’esempio sopra, quando il stress-ng CPU+SYS supera il valore definito di 4, i processi lavoratore vengono uccisi.
Limite sia di Tempo che di Memoria del Processo
È inoltre possibile limitare sia memoria che tempo contemporaneamente come segue.
$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Timeout supporta anche alcune opzioni avanzate come --detect-hangups
, che abilita la rilevazione di arresti anomali.
$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Puoi monitorare il limite di memoria RSS (resident set size) utilizzando l’opzione --memlimit-rss
o -s
.
$ ./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
Inoltre, per ottenere il codice di uscita o il segnale+128 di un processo, utilizza l’opzione --confess
o -c
come mostrato.
$ ./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
Per ulteriori informazioni e esempi di utilizzo, consulta il repository di timeout su Github: https://github.com/pshved/timeout.
Potresti trovare utili anche i seguenti articoli correlati:
- Come Trovare i 15 Processi Principali per Utilizzo di Memoria con ‘top’ in Modalità Batch
- CPUTool – Limita e Controlla l’Utilizzo della CPU di Qualsiasi Processo in Linux
- Come Limitare l’Utilizzo della CPU di un Processo in Linux con CPULimit Tool
Lo script timeout è un semplice programma di monitoraggio delle risorse che limita essenzialmente il tempo e il consumo di memoria dei processi in Linux. Puoi inviarci feedback sullo script timeout tramite il modulo dei commenti qui sotto.
Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/