O comando ulimit no Linux é usado para visualizar ou definir limites de recursos para processos de usuário. Esses limites incluem restrições suaves (soft limits), que são os valores atuais aplicados, e restrições duras (hard limits), que atuam como limites superiores que não podem ser ultrapassados pelos limites suaves. Se um processo exceder um limite suave, ele pode ser encerrado ou restringido.
| Parâmetro | Descrição |
|---|---|
| unlimited | Remove restrições em recursos, exceto para o número máximo de arquivos abertos e procesos simultâneos. |
| -a | Exibe todos os limites de recursos atuais. |
| -b | Tamanho máximo do buffer de soquete. |
| -c | Tamanho máximo do arquivo core em blocos. |
| -d | Tamanho máximo do segmento de dados em kilobytes. |
| -f | Tamanho máximo de arquivos criados pelo shell em blocos. |
| -h | Define o limite duro para um recurso específico. Apenas usuários root podem aumentar limites duros. |
| -n | Número máximo de arquivos abertos por processo. |
| -s | Tamanho máximo da pilha em kilobytes. |
| -u | Número máximo de processos por usuário. |
| -v | Tamanho máximo da memória virtual em kilobytes. |
| -t | Tempo máximo de CPU por processo em segundos. |
| -S | Define o limite suave para um recurso. Se não especificado com -H, afeta ambos os limites. |
| -H | Define o limite duro para um recurso. |
Configuração Temporária
Para ajustar limites de recursos de forma temporária durante a sessão atual, utilize comandos ulimit diretamente no terminal. Essas alterações se aplicam apenas ao processo em execução e seus filhos, sendo revertidas após o logout.
ulimit -u 20480 # Limita processos por usuário a 20480
ulimit -n 8192 # Define máximo de 8192 arquivos abertos por processo
ulimit -d unlimited # Remove restrição no segmento de dados
ulimit -m unlimited # Sem limite para memória residente
ulimit -s unlimited # Permite pilha de tamanho ilimitado
ulimit -t unlimited # Tempo de CPU sem restrição
ulimit -v unlimited # Memória virtual sem limite
Configuração Permanente
Modificando variáveis de ambiente globais
Para tornar as confiugrações persistentes em todos os usuários, adicione os comandos ulimit em um script no diretório /etc/profile.d/ ou no arquivo ~/.bashrc do usuário.
# Editar ou criar o arquivo /etc/profile.d/ulimit.sh
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
Editando o arquivo limits.conf
Outro método é configurar limites diretamente no arquivo /etc/security/limits.conf. Este arquivo permite definir limites por usuário ou grupo com sintaxe específica.
# Formato: <domínio> <tipo> <item> <valor>
# Domínio pode ser nome de usuário, grupo com @, ou wildcards como *.
# Tipo: soft para limite suave, hard para limite duro.
# Exemplos:
* soft nofile 4096
* hard nofile 8192
@developers soft nproc 2048
root hard cpu 60
Itens comuns incluem nofile para arquivos abertos, nproc para processos, e cpu para tempo de CPU. Para uma lista completa, consulte a documentação do sistema.
Observações Importantes
Em distribuições baseadas em Red Hat, como CentOS, a configuração de nproc via limits.conf pode não ser aplicada. Em vez disso, modifique o arquivo em /etc/security/limits.d/90-nproc.conf para ajustar limites de processos.