Como definir limites para processos em execução do usuário no Linux
Uma das belezas do Linux é que você pode controlar quase tudo nele. Isso dá ao administrador do sistema um grande controle sobre o sistema e uma melhor utilização dos recursos do sistema.
Embora alguns possam nunca ter pensado em fazer isso, é importante saber que no Linux você pode limitar a quantidade de recursos que um único usuário pode usar e por quanto tempo.
Leia também: Como aumentar o limite do número de arquivos abertos no Linux
Neste breve tópico mostraremos como limitar o número de processos iniciados pelo usuário e como verificar os limites atuais e modificá-los.
Antes de prosseguirmos, há duas coisas que precisamos apontar:
- Você precisa de acesso root ao seu sistema para modificar os limites do usuário
- Você deve ser extremamente cuidadoso se planeja modificar esses limites
Para configurar limites de usuários, precisaremos editar o seguinte arquivo:
/etc/security/limits.conf
Este arquivo é usado para aplicar o ulimit criado pelo pam_module.
O arquivo possui a seguinte sintaxe:
<domain> <type> <item> <value>
Aqui pararemos para discutir cada uma das opções:
- Domínio – inclui nomes de usuário, grupos, intervalos de guias, etc.
- Tipo – limites flexíveis e rígidos
- Item – o item que será limitado – tamanho do núcleo, tamanho do arquivo, nproc etc.
- Valor – este é o valor para o limite determinado
Uma boa amostra para um limite é:
@student hard nproc 20
A linha acima define um limite máximo de 20 processos no grupo "student"
.
Se você quiser ver os limites de um determinado processo, basta “cat” o arquivo de limites da seguinte forma:
cat /proc/PID/limits
Onde PID é o ID real do processo, você pode descobrir o ID do processo usando o comando ps. Para uma explicação mais detalhada, leia nosso artigo que diz – Encontre processos Linux em execução e defina limites de processo por nível de usuário
Então aqui está um exemplo:
cat /proc/2497/limits
Saída de amostra
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 32042 32042 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 32042 32042 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Todas as linhas são praticamente autoexplicativas. No entanto, se você quiser encontrar mais configurações que pode inserir no arquivo limits.conf, você pode dar uma olhada no manual fornecido aqui.
Se você tiver alguma dúvida ou comentário, não hesite em enviá-los na seção de comentários abaixo.