Como remover o limite do tamanho do arquivo de despejo principal

11

Gostaria de aumentar o limite máximo de tamanho para arquivos de despejo de núcleo como um usuário comum. Usando bash, eu posso configurá-lo assim:

$ ulimit -c 100

o que funciona bem na primeira vez em que o configuro. No entanto, na próxima vez que usar esse comando, só posso definir esse limite para um valor que não exceda 100. Em geral, só posso defini-lo para um valor arbitrário na primeira vez em que utilizo esse comando desde o login. Nas próximas vezes, os valores possíveis são limitados de cima pelo valor definido inicialmente.

Como posso tornar isso persistente em vários usos do comando?

Peter Bašista
fonte

Respostas:

9

Por @ Peter Basista resposta 's em sua própria pergunta:

No começo, pensei que era um erro e foi por isso que comecei esta pergunta. Mas acabou que é simplesmente um comportamento perfeitamente correto. Acontece que o ditado RTFM também se aplica aqui.

Como man bashrevela, o ulimitcomando interno possui parâmetros adicionais: -Hpara definir os chamados limites rígidos e -S para definir os chamados limites flexíveis . Além disso, se nenhuma dessas opções são dadas, o comportamento padrão é que ulimittenta definir tanto o soft e os limites rígidos para o mesmo valor de uma só vez. E esse era o problema.

Agora há uma citação na bashpágina de manual:

Um limite fixo não pode ser aumentado por um usuário não raiz depois de definido;

Então, lá vamos nós. O uso correto do ulimitcomando deve sempre ter isso em mente. Mais importante ainda, nunca deve ser usado sem -Hou sem -Sopções, a menos que você tenha certeza de saber o que está fazendo (o que na época eu obviamente não estava).

O que eu deveria ter feito é algo como isto:

Após o login: ulimit -H -c unlimited

Sempre que eu quero alterar o limite máximo do tamanho do dump principal ulimit -S -c <new size>

Então é isso. Espero que ajude alguém que possa ter problemas semelhantes.

Kevin Bowen
fonte