Como definir um limite de tempo em comandos do Linux
Para administradores de sistema responsáveis pelo controle de servidores Linux, o gerenciamento de recursos é uma tarefa importante. Às vezes, os comandos do Linux ocupam uma grande quantidade de recursos do sistema e precisam ser interrompidos.
Felizmente, você pode limitar o tempo de execução de seus comandos usando utilitários como timelimit . Neste artigo, discutiremos por que você deve adicionar limites de tempo aos seus comandos e como adicionar uma restrição de tempo usando comandos como timelimit e timeout.
Por que limitar o tempo de execução de um comando?
Existem vários motivos pelos quais você pode ter que executar seus comandos com um limite de tempo. Primeiro, você pode estar executando um computador ou servidor mais antigo e não quer que seu sistema desperdice seus recursos em processamento indesejado.
Em segundo lugar, tarefas com limite de tempo, como transferências de arquivos, terminam após um determinado período, mas seus processos não param imediatamente. Para impedir que o programa consuma tempo de CPU e memória adicionais, você pode adicionar um limite que interromperá o processo assim que a transferência for concluída.
Adicionar limite usando o comando timeout
O comando timeout é a primeira escolha de muitos usuários Linux para adicionar uma restrição de tempo a seus comandos. Como essa ferramenta faz parte do pacote GNU Core Utilities , ela vem pré-instalada em quase todas as distribuições do Linux.
A sintaxe básica do comando timeout é:
timeout limit command
… onde limite é a quantidade de tempo que o comando deve ser executado e command é o comando do Linux que você deseja executar com um limite de tempo.
Por exemplo, se você deseja obter detalhes do processo usando o comando top por 10 segundos:
timeout 10s top
O comando top não tem fim e você deve encerrá-lo manualmente usando Ctrl + C. O comando mencionado será executado no início por 10 segundos e, uma vez que o cronômetro termine, o tempo limite irá parar sua execução. Observe que o tempo limite leva segundos como unidade de tempo padrão, o que significa que 10 e 10s são iguais.
Você também pode usar m , he d para minutos , horas e dias, respectivamente.
Enviar sinais de interrupção manualmente com tempo limite
Por padrão, o comando timeout envia SIGTERM como o sinal de eliminação. SIGTERM significa Signal Terminate, que termina o processo imediatamente.
Você também pode enviar outros sinais usando o sinalizador -s . Por exemplo, para enviar o sinal SIGKILL:
timeout -s SIGKILL 10 top
Especificar o sinal com seu número de sinal também é possível. O comando a seguir também envia o sinal SIGKILL para o comando superior.
timeout -s 9 10 top
… onde 9 é o número do sinal para SIGKILL.
Para obter uma lista de todos os sinais disponíveis:
kill -l
Alguns comandos não param completamente, mesmo depois de adicionar um limite de tempo. Em tais situações, adicionar um sinal de eliminação com o comando de tempo limite padrão corrige o problema.
timeout -k 15 10 top
O comando mencionado executará primeiro o comando top por 10 segundos e, se o comando não parar, enviará um sinal de eliminação para o processo após 15 segundos.
Restringindo o tempo de execução do comando com limite de tempo
Ao contrário do comando timeout, timelimit não é um dos pacotes padrão que vêm pré-instalados nas distros Linux. Portanto, você terá que instalar manualmente o timelimit em seu sistema.
Para instalar em distribuições baseadas em Debian:
sudo apt install timelimit
Timelimit não está disponível nos repositórios oficiais do Arch. Mas você pode instalá-lo usando um gerenciador de pacotes AUR como o yay .
sudo yay -S timelimit
Para instalar no Fedora:
sudo dnf install timelimit
No RHEL e CentOS:
sudo yum install timelimit
Como alternativa, se você ainda não conseguir instalar o pacote em seu sistema, baixe o código-fonte do site oficial e instale-o manualmente.
Baixar : timelimit
Para executar o comando top por 10 segundos usando o limite de tempo:
timelimit -t10 top
Timelimit aceita vários argumentos, como warntime , warnsig , killtime e killsig . Se o usuário não fornecer esses argumentos, seus valores padrão serão usados , que são warntime = 3600 segundos, warnsig = 15 , killtime = 120 e killsig = 9 .
Gerenciando a vida de um comando no Linux
Monitorar os comandos e assumir o controle dos processos torna-se importante se sua máquina Linux tiver recursos limitados. Utilitários como tempo limite e limite de tempo são um salva-vidas, pois permitem que você adicione restrições de tempo aos seus comandos.
Como o tempo de execução do comando, você também pode restringir o tempo de tela do sistema. Se você é um pai que não quer que seu filho perca tempo desnecessário na frente de um computador, limitar o tempo na tela é a escolha mais adequada.