Um limite rígido só pode ser aumentado pela raiz (qualquer processo pode reduzi-lo). Portanto, é útil para segurança: um processo não raiz não pode ultrapassar um limite rígido. Mas é inconveniente que um processo não raiz não possa ter um limite inferior ao de seus filhos.
Um limite flexível pode ser alterado pelo processo a qualquer momento. Portanto, é conveniente, desde que os processos cooperem, mas não é bom para segurança.
Um caso de uso típico para limites flexíveis é desativar dumps principais ( ulimit -Sc 0
), mantendo a opção de ativá-los para um processo específico que você está depurando ( (ulimit -Sc unlimited; myprocess)
).
O ulimit
comando shell é um invólucro em torno da setrlimit
chamada do sistema, e é aí que você encontrará a documentação definitiva.
Observe que alguns sistemas podem não implementar todos os limites. Especificamente, alguns sistemas não suportam limites por processo nos descritores de arquivo (o Linux suporta); se o seu não, o comando shell pode ser um não-op.
ulimit -n
? Tente executar um shell com um valor muito baixo (bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c'
). Qual é o resultado?