Um limite rígido só pode ser gerado pela raiz (qualquer processo pode diminuí-lo). Por isso, é útil para a 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 menor que seus filhos.
Um limite flexível pode ser alterado pelo processo a qualquer momento. Por isso, é conveniente, desde que os processos cooperem, mas não é bom para a segurança.
Um caso de uso típico para limites flexíveis é desabilitar os dumps principais ( ulimit -Sc 0
), mantendo a opção de habilitá-los para um processo específico que você está depurando ( (ulimit -Sc unlimited; myprocess)
).
O comando ulimit
shell é um wrapper em torno da setrlimit
chamada do sistema, então é 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 em descritores de arquivos (o Linux faz); se o seu não, o comando shell pode ser um não-operacional.