Definindo o núcleo do linux no local do dump

Definindo o núcleo do linux no local do dump

O que é "dump central" no Linux?

Quando um processo sai inesperadamente, ele freqüentemente deixa para trás um "dump do núcleo" em seu sistema. Há uma mensagem relevante que está incluída com isso. Um núcleo serve como uma ferramenta de depuração e é uma imagem de memória que também inclui as informações de depuração. Se você é um usuário que não deseja depurar um programa, você pode excluir o núcleo:

$ rm núcleo

Você também pode deixá -lo intocado, pois o núcleo antigo é substituído se um novo for despejado. Você também pode desativar o dumping do núcleo com o seguinte comando:

$ ulimit -c 0

Podemos gerar os principais despejos sob demanda (por exemplo, por meio de um depurador) ou eles podem ser produzidos automaticamente após o término. O kernel inicia os principais despejos como conseqüência da saída abrupta de um programa. Estes podem ser enviados para algum outro programa (como o SystemD-COREDUMP) para operações adicionais.

Como geralmente é o caso, há uma troca entre coletar os dados para obter melhor estabilidade e solução de problemas e o risco de revelar as informações confidenciais dos dados de depuração.

O que vamos cobrir?

Neste artigo, veremos como definir a localização dos principais dumps no Ubuntu 20.04 OS. Vamos começar agora.

Gerando um depósito de núcleo

Vamos primeiro ver como podemos gerar um depósito de núcleo. Para isso, usamos o comando Linux Kill. Primeiro, encontre o PID de um processo e depois envie um sinal de morte. Por exemplo, vamos começar o processo de sono e depois matá -lo com seu PID:

$ Sleep 500
$ kill -s Sigtrap $ (PGREP SLEEP)

Agora que você aprendeu a gerar um dump do núcleo, você pode usá -lo nas seguintes seções subsequentes.

Onde eles vão?

O arquivo de despejo principal é nomeado Core.PID por padrão e é criado no diretório de trabalho do aplicativo. Aqui, PID é o ID do processo.

Com a ferramenta Ulimit, você pode obter ou alterar os limites de recursos do sistema para o shell atual e qualquer concha que venha depois dele. Para verificar ou configurar o limite de tamanho do arquivo principal, use o seguinte comando:

$ ulimit -c

Para evitar delimitar ou truncar o arquivo principal, verifique se o limite está definido globalmente como "ilimitado" [1]. Isso pode ser feito em/etc/segurança/limites.Conf, adicionando a seguinte linha:

raiz - Core Unlimited
* - Core Unlimited

Agora, basta fazer login e fazer logon para que os limites sejam aplicados à sua sessão.

Personalizando a localização do dump do núcleo

O “kernel sysctl.comando core_pattern ”ou o“/proc/sys/kernel/core_pattern ”é normalmente usado para definir o local onde vão os dumps do núcleo.

Digite o seguinte comando para ver as configurações do padrão principal atual:

$ cat/proc/sys/kernel/core_pattern

Geralmente, você encontrará o valor padrão listado como "núcleo" aqui.

Usando "/proc/sys/kernel/core_pattern" para definir o local do dump do núcleo

Vamos redirecionar temporariamente os principais despejos para um novo local, digamos/tmp/dumps/núcleo, usando o arquivo “/proc/sys/kernel/core_pattern” [2] [3]. Agora, siga as seguintes etapas:

Passo 1. Primeiro, faça um diretório para armazenar os principais despejos:

$ mkdir -p/tmp/dump/núcleos/

Passo 2. Dê as permissões necessárias a este diretório:

$ chmod a+x/tmp/dump/núcleos/

etapa 3. Agora, defina temporariamente o caminho do dump do núcleo:

$ echo '/tmp/dump/núcleos/núcleo' | sudo tee/proc/sys/kernel/core_pattern

Novamente, defina globalmente o ulimit como ilimitado.

Aqui, podemos anexar algumas outras informações ao nome do arquivo, como mostrado no seguinte:

$ echo '/tmp/dump/núcleos/core_%e.%p_%t '| sudo tee/proc/sys/kernel/core_pattern

Cada parâmetro usado aqui pode ser definido da seguinte forma:

%E: para nome de arquivo executável
%P: para ID do processo ou PID.
%t: para adicionar um registro de data e hora

Passo 4. Em seguida, temos que mudar o “/etc/sysctl.arquivo conf ”para aplicar permanentemente as configurações anteriores. Abra este arquivo:

$ sudo nano /etc /sysctl.conf

Agora, adicione a seguinte linha a este arquivo:

núcleo.core_pattern =/tmp/dump/núcleos/núcleo

Além disso, em vez dessa linha, você pode adicionar isso:

núcleo.core_pattern = '/tmp/dump/núcleos/core_%e.%p_%t '

Isso é tudo o que precisamos fazer. Agora, gerar um dump do núcleo, como mencionado na seção "Geração de um dump do núcleo". Depois disso, podemos verificar se nosso arquivo principal é gerado ou não:

$ ls -l/tmp/dump/núcleos/

Usando o comando “sysctl” para definir o local do dump do núcleo

Como mencionado anteriormente, também podemos usar o comando sysctl para o mesmo propósito. Vamos alterar o local do dump do núcleo e o formato do arquivo principal:

Passo 1. Crie um novo diretório e forneça as permissões necessárias:

$ mkdir -p /tmp /mydumps
$ chmod a+rwx /tmp /mydumps

Passo 2. Agora, basta executar o seguinte comando:

$ sudo sysctl -w kernel.core_pattern =/tmp/mydumps/core_%e.%p_%t

etapa 3. Agora, novamente, gerar o depósito de núcleo como fizemos anteriormente. Depois disso, verifique se o arquivo principal é gerado ou não:

$ ls -l/tmp/mydumps/

Nos sistemas Ubuntu, os principais dumps são frequentemente enviados para APORTAR. Para sistemas baseados em Red Hat, ele pode ser encaminhado para a ferramenta automática de relatórios de bugs (ABRT). Inicialmente, eu estava enfrentando um problema em configurar o local do dump do núcleo, então tive que desativar completamente o APORT no Ubuntu 20.04. Talvez este também possa ser o caso com Red Hat e outros.

Conclusão

Neste artigo, vimos como podemos personalizar a localização dos principais despejos no Ubuntu 20.04 OS. Os principais dumps podem ajudá -lo a descobrir o que está errado, mas eles são terríveis para vazar dados confidenciais. Os principais despejos devem ser desativados sempre que não forem necessários e apenas ativados quando absolutamente necessário. Em tal situação, confirme que os arquivos são armazenados com segurança para que os usuários comuns não possam acessar os dados. Além disso, independentemente da sua decisão, você deve sempre testar sua configuração para garantir que ela opere como pretendido.

Os principais dumps e configurações padrão são tratados de maneira diferente por vários sistemas operacionais. Nos últimos tempos, a maioria dos sistemas Linux está adotando o Systemd, que trouxe alguns pequenos ajustes de regras. Dependendo de como o seu sistema está configurado, pode ser necessário procurar depostos principais.