Geração de dump principal no Linux

1

Algo muito desconcertante está acontecendo, com relação à minha caixa.

Abaixo estão minhas configurações em /etc/sysctl.conf :

kernel.core_pattern = core
kernel.core_uses_pid = 1

Em /etc/profile , tenho isto:

ulimit -S -c unlimited >/dev/null 2>1

E eu confirmo tudo olhando:

cat /proc/sys/kernel/core_pattern
cat /proc/sys/kernel/core_uses_pid

Então, quando fazemos um ulimit -c , ele retorna um valor de unlimited .

quando fazemos um ulimit -S -c , ele retorna um valor de unlimited .

quando fazemos um ulimit -H -c , ele retorna um valor de unlimited .

E quando executo kill -6 em um processo em execução, não obtenho um núcleo.

Quando executo ulimit -c unlimited e inicio o processo novamente, e executo kill -6 , ele gera um núcleo.

Alguém pode explicar qual é a diferença entre o limite suave e o limite rígido?

E deveríamos estar mudando o limite rígido?

Eu não gosto dessa situação, porque os núcleos às vezes são gerados e às vezes não.

Mesmo se eu mudar o limits.conf, eu realmente gostaria de entender o que estou fazendo.

Mais algumas coisas que preciso divulgar é que estou executando em um ambiente RHEL 6 (x86_64).

E que há espaço em disco suficiente e não é um processo DAEMON ou um programa setuid. E há permissões suficientes na pasta para criar novos arquivos, e não há arquivos / pastas chamados core no diretório de tempo de execução.

    
por roymustang86 03.02.2014 / 22:58

2 respostas

0

Então, a razão pela qual isso estava acontecendo era porque o script estava sendo executado no prompt sh, como no prompt do bash, onde o ulimit estava definido. Isso não é estranho? Nós mudamos o script para rodar no bash, e funciona bem agora.

    
por 28.10.2015 / 14:04
0

Você pode ler sobre limites hard vs. soft na seção do manual do Bash em ulimit .

Como você diz que obtém um arquivo principal se reiniciar o programa a partir do seu shell, o problema é que o processo original não está sendo iniciado em um ambiente que lê /etc/profile (esse arquivo é lido apenas para shells de login) . Você pode considerar adicionar ulimit -c unlimited a qualquer script que esteja iniciando esse programa (antes da linha que inicia, é claro).

    
por 04.02.2014 / 02:29