Come limitare il tempo e l'utilizzo della memoria dei processi in Linux
Lo script timeout è un utile programma di monitoraggio delle risorse per limitare il consumo di tempo e memoria dei processi in Linux. Consente di eseguire programmi sotto controllo e di imporre limiti di tempo e memoria, terminando il programma in caso di violazione di questi parametri.
Non è necessaria alcuna installazione, è sufficiente eseguire un comando insieme ai suoi argomenti utilizzando il programma timeout e monitorerà la memoria del comando e il consumo di tempo, interrompendo il processo se esce dai limiti e avvisandoti con l'impostazione predefinita Messaggio.
Per eseguire questo script, devi avere Perl 5 installato sul tuo sistema Linux e il filesystem /proc montato.
Per verificare la versione installata di Perl sul tuo sistema Linux, esegui il comando seguente.
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 normale comando Linux.
cd ~/bin
git clone https://github.com/pshved/timeout.git
cd timeout
Diamo ora un'occhiata a come funziona lo script timeout.
Limitazione della memoria di base (100 MB di memoria virtuale):
Questo primo esempio mostra come limitare l'utilizzo della memoria di un processo a 100M di memoria virtuale, utilizzando il flag -m
. L'unità predefinita per la memoria è kilobyte.
Qui, il comando stress-ng esegue 4 fattori di stress della memoria virtuale (VMS) che si combinano per utilizzare il 40% della memoria disponibile per 10 minuti. Pertanto ogni fattore di stress utilizza il 10% della memoria disponibile.
./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Considerando l'output del comando timeout riportato sopra, i processi di lavoro stress-ng sono stati terminati dopo soli 1,16 secondi. Questo perché il consumo combinato di memoria del VMS (438660 kilobyte) è maggiore dell'utilizzo consentito della memoria virtuale per stress-ng e il suo figlio processi.
Limitazione temporale di base del processo:
Per abilitare la limitazione temporale del processo, utilizzare il flag -t
come mostrato.
./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
Nell'esempio sopra, quando il tempo stress-ng CPU+SYS supera il valore definito di 4, i processi di lavoro vengono terminati.
Limitare sia il tempo che la memoria del processo
Puoi anche limitare sia la memoria che il 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 il rilevamento dei blocchi.
./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 restituire il codice di uscita o il segnale+128 di un processo, utilizzare l'opzione --confess
o -c
come mostrato.
./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
Per ulteriori informazioni ed esempi di utilizzo, vedere il repository Github timeout: https://github.com/pshved/timeout.
Potresti trovare ugualmente utili anche i seguenti articoli correlati:
- Come trovare i primi 15 processi in base all'utilizzo della 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 lo strumento CPULimit
Lo script timeout è un semplice programma di monitoraggio delle risorse che sostanzialmente limita il tempo e il consumo di memoria dei processi in Linux. Puoi fornirci feedback sullo script timeout tramite il modulo di commento qui sotto.