O script timeout é um programa de monitoramento de recursos útil para limitar o tempo e o consumo de memória de processos no Linux. Ele permite que você execute programas sob controle e aplique limites de tempo e memória, encerrando o programa ao violar esses parâmetros.
Nenhuma instalação é necessária, basta executar um comando juntamente com seus argumentos usando o programa timeout e ele monitorará o consumo de memória e tempo do comando, interrompendo o processo se ele exceder os limites e notificando-o com a mensagem predefinida.
Para executar este script, você deve ter o Perl 5 instalado no seu sistema Linux e o sistema de arquivos /proc montado.
Para verificar a versão instalada do Perl no seu sistema Linux, execute o seguinte comando.
$ perl -v

Em seguida, clone o repositório timeout para o seu sistema usando o comando git, depois mova-se para o repositório local usando o comando cd e invoque-o como um comando Linux comum.
$ cd ~/bin $ git clone https://github.com/pshved/timeout.git $ cd timeout
Agora vamos ver como o script timeout funciona.
Limitação Básica de Memória (100M de Memória Virtual):
Este primeiro exemplo mostra como limitar o uso de memória de um processo para 100M de memória virtual, usando a bandeira -m
. A unidade padrão para memória é em kilobytes.
Aqui, o comando stress-ng executa 4 estressores de memória virtual (VMS) que combinam para usar 40% da memória disponível por 10 minutos. Assim, cada estressor usa 10% da memória disponível.
$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Considerando a saída do comando timeout acima, os processos de trabalho do stress-ng foram encerrados após apenas 1,16 segundos. Isso ocorre porque o consumo de memória combinado dos VMS (438660 kilobytes) é maior que o uso permitido de memória virtual para o stress-ng e seus processos filhos.
Limitação Básica de Tempo de Processo:
Para habilitar a limitação de tempo de processo, use a bandeira -t
como mostrado.
$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

No exemplo acima, quando o tempo stress-ng CPU+SYS excede o valor definido de 4, os processos de trabalho são encerrados.
Limitar Tempo e Memória de Processo
Você também pode limitar tanto memória quanto tempo ao mesmo tempo, como segue.
$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
O Timeout também suporta algumas opções avançadas, como --detect-hangups
, que habilita a detecção de hangups.
$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Você pode monitorar o limite de memória RSS (tamanho de conjunto residente) usando a opção --memlimit-rss
ou -s
.
$ ./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
Além disso, para retornar o código de saída ou o sinal+128 de um processo, use a opção --confess
ou -c
conforme mostrado.
$ ./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
Para mais informações e exemplos de uso, consulte o repositório do timeout no Github: https://github.com/pshved/timeout.
Você também pode achar os seguintes artigos relacionados igualmente úteis:
- Como Encontrar os 15 Principais Processos por Uso de Memória com ‘top’ no Modo Lote
- CPUTool – Limitar e Controlar a Utilização de CPU de Qualquer Processo no Linux
- Como Limitar o Uso de CPU de um Processo no Linux com a Ferramenta CPULimit
O script timeout é um programa simples de monitoramento de recursos que essencialmente restringe o tempo e o consumo de memória de processos no Linux. Você pode nos fornecer feedback sobre o script timeout através do formulário de comentário abaixo.
Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/