ulimit: diferença entre limites hard e soft

75

Qual é a diferença entre limites hard e soft em ulimit?

Para o número de arquivos abertos, tenho um limite flexível de 1024 e um limite rígido de 10240. É possível executar programas abrindo mais de 1024 arquivos. Qual é o limite suave para?

    
por daniel kullmann 20.01.2012 / 17:59

1 resposta

68

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.

    
por 20.01.2012 / 18:17