Configuración de Linux Core como ubicación de volcado

¿Qué es el «volcado del núcleo» en Linux?

Cuando un proceso finaliza inesperadamente, con frecuencia deja un «volcado del núcleo» en su sistema. Hay un mensaje relevante que se incluye con esto. Un núcleo sirve como herramienta de depuración y es una imagen de la memoria que también incluye la información de depuración. Si es un usuario que no desea depurar un programa, puede eliminar el núcleo:

$ rm núcleo

También puede dejarlo intacto, ya que el núcleo anterior se sobrescribe si alguna vez se descarga uno nuevo. También puede desactivar el volcado del núcleo con el siguiente comando:

$ ulímite -c 0

Podemos generar los volcados del núcleo a pedido (por ejemplo, a través de un depurador) o se pueden producir automáticamente al finalizar. El núcleo inicia volcados del núcleo como consecuencia de la salida abrupta de un programa. Estos pueden enviarse a algún otro programa (como systemd-coredump) para operaciones adicionales.

Como suele ser el caso, existe una compensación entre la recopilación de datos para una mejor estabilidad y resolución de problemas y el riesgo de revelar información confidencial de los datos de depuración.

¿Qué cubriremos?

En este artículo, veremos cómo configurar la ubicación de los volcados del núcleo en el sistema operativo Ubuntu 20.04. Comencemos ahora.

Generación de un volcado de núcleo

Primero veamos cómo podemos generar un volcado del núcleo. Para esto, usamos el comando kill de Linux. Primero, encuentre el PID de un proceso y luego envíe una señal de finalización. Por ejemplo, comencemos el proceso de suspensión y luego eliminémoslo con su PID:

$ dormir 500

$  matar -s SIGTRAP $ ( pgrep dormir )

Ahora que aprendió a generar un volcado de memoria, puede usarlo en las siguientes secciones.

¿A dónde van?

El archivo de volcado del núcleo se llama core.pid de forma predeterminada y se crea en el directorio de trabajo de la aplicación. Aquí, pid es la identificación del proceso.

Con la herramienta ulimit, puede obtener o cambiar los límites de recursos del sistema para el shell actual y los shells posteriores. Para verificar o configurar el límite de tamaño del archivo principal, use el siguiente comando:

$ límite -c

Para evitar delimitar o truncar el archivo principal, asegúrese de que el límite esté establecido globalmente en «ilimitado» [1]. Esto se puede hacer en /etc/security/limits.conf agregando la siguiente línea:

raíz – núcleo ilimitado

* – núcleo ilimitado

Ahora, simplemente cierre sesión y vuelva a iniciarla para que se apliquen los límites a su sesión.

Personalización de la ubicación del volcado de núcleo

El comando «sysctl kernel.core_pattern» o «/proc/sys/kernel/core_pattern» se usa normalmente para establecer la ubicación donde van los volcados del núcleo.

Ingrese el siguiente comando para ver la configuración del patrón principal actual:

$ cat / proc / sys / kernel / core_pattern

Por lo general, aquí encontrará el valor predeterminado como «núcleo».

Uso de «/proc/sys/kernel/core_pattern» para establecer la ubicación de volcado del núcleo

Redirijamos temporalmente los volcados del núcleo a una nueva ubicación, digamos /tmp/dumps/core, usando el archivo “/proc/sys/kernel/core_pattern” [2] [3]. Ahora, sigue los siguientes pasos:

Paso 1 Primero, cree un directorio para almacenar los volcados del núcleo:

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

Paso 2 Otorgue los permisos necesarios a este directorio:

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

Paso 3 Ahora, establezca temporalmente la ruta de volcado del núcleo:

$ echo ‘/tmp/volcado/núcleos/núcleo’ | sudo tee / proc / sys / kernel / core_pattern

Una vez más, establezca globalmente el ulimit en ilimitado.

Aquí, podemos agregar alguna otra información al nombre del archivo como se muestra a continuación:

$ echo ‘/tmp/dump/cores/core_%e.%p_%t’ | sudo tee / proc / sys / kernel / core_pattern

Cada parámetro que se utiliza aquí se puede definir de la siguiente manera:

% e: para el nombre del archivo ejecutable

% p: para el id o pid del proceso .

% t: para agregar una marca de tiempo

Paso 4 A continuación, tenemos que cambiar el archivo “/etc/sysctl.conf” para aplicar de forma permanente la configuración anterior. Abre este archivo:

$ sudo nano / etc / sysctl.conf

Ahora, agregue la siguiente línea a este archivo:

kernel.core_pattern = / tmp / volcado / núcleos / núcleo

Además, en lugar de esta línea, puede agregar esto:

kernel.core_pattern= ‘/tmp/dump/cores/core_%e.%p_%t’

Eso es todo lo que tenemos que hacer. Ahora, genere un volcado del núcleo como se menciona en la sección «Generación de un volcado del núcleo». Después de esto, podemos verificar si nuestro archivo principal se genera o no:

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

Uso del comando «Sysctl» para establecer la ubicación de volcado del núcleo

Como se mencionó anteriormente, también podemos usar el comando sysctl para el mismo propósito. Cambiemos la ubicación del volcado del núcleo y el formato del archivo del núcleo:

Paso 1 Cree un nuevo directorio y otorgue los permisos necesarios:

$ mkdir -p / tmp / mis volcados

$ chmod a+rwx / tmp / mis volcados

Paso 2 Ahora, simplemente ejecute el siguiente comando:

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

Paso 3 Ahora, nuevamente, genere el volcado del núcleo como lo hicimos anteriormente. Después de esto, verifique si el archivo central se genera o no:

$ ls -l / tmp / misvolcados /

En los sistemas Ubuntu, los volcados del núcleo a menudo se envían a Apport. Para los sistemas basados ​​en Red Hat, podría reenviarse a la Herramienta de informe automático de errores (ABRT). Inicialmente, me enfrentaba a un problema al configurar la ubicación de volcado del núcleo, por lo que tuve que deshabilitar completamente Apport en Ubuntu 20.04. Tal vez, este también puede ser el caso de Red Hat y otros.

Conclusión

En este artículo, hemos visto cómo podemos personalizar la ubicación de los volcados del núcleo en el sistema operativo Ubuntu 20.04. Los volcados del núcleo pueden ayudarlo a descubrir qué está mal, pero son terribles para filtrar datos confidenciales. Los volcados del núcleo deben deshabilitarse siempre que no sean necesarios y solo habilitarse cuando sea absolutamente necesario. En tal situación, confirme que los archivos estén almacenados de forma segura para que los usuarios normales no puedan acceder a los datos. Además, independientemente de su decisión, siempre debe probar su configuración para asegurarse de que funciona según lo previsto.

Los volcados del núcleo y las configuraciones predeterminadas se manejan de manera diferente en varios sistemas operativos. En los últimos tiempos, la mayoría de los sistemas Linux han adoptado systemd, lo que ha provocado algunos ajustes menores en las reglas. Dependiendo de cómo esté configurado su sistema, es posible que deba buscar volcados de núcleo.