Tengo un trabajo inicial que ocasionalmente se bloquea con una falla de segmentación, y tengo algunas preguntas sobre los volcados del núcleo.
Primero, debo agregar una estrofa:
limit core unlimited unlimited
¿Existe un inconveniente para permitir tamaños de núcleo ilimitados? ¿Sería mejor un límite finito?
Segundo, ¿a dónde irá el archivo central? Si el valor predeterminado no es un lugar estándar o lógico, ¿cómo hago para que aparezca en otro lugar?
upstart
segmentation-fault
ulimit
brooks94
fuente
fuente
Respuestas:
Los volcados de núcleo ilimitados no son recomendables en la mayoría de las situaciones, pero son técnicamente buenos. Un volcado de núcleo solo tiene "toda la memoria" que tiene el proceso actual. Entonces, a lo sumo, solo puede ser tan grande como su ram + swap. Espero que tengas más espacio libre que eso.
En la vida real deberían ser "pequeños" en comparación con el total de ram + swap.
El archivo "debería" terminar en "el directorio actual". Para tareas iniciales que no son chdir, eso suele ser /. Si cambian de directorio, entonces estás solo para cazarlos. Sin embargo, puede codificar una ruta para ellos.
Debería poder comprobar
/proc/sys/kernel/core_pattern
el "patrón". Si configura el patrón en algo asíecho "/var/log/core" > /proc/sys/kernel/core_pattern
, todos sus núcleos deberían terminar en / var / logfuente
Un archivo central es una imagen de un proceso creado por el sistema operativo cuando el proceso finaliza inesperadamente. Los archivos principales se crean cuando un programa se comporta mal debido a un error o una violación de los mecanismos de protección de la CPU o la memoria. El sistema operativo mata el programa y crea el archivo central.
Este archivo puede ser muy útil para determinar qué salió mal con un proceso. La producción de archivos principales se puede habilitar de manera predeterminada, dependiendo de la distribución y versión de Linux que tenga.
Si no desea ningún archivo principal, configure "ulimit -c 0" en sus archivos de inicio. Ese es el valor predeterminado en muchos sistemas; en
/etc/profile
usted puede encontrarDebido a que los archivos truncados no tienen un uso práctico, establezca el tamaño del archivo central de Linux en "ilimitado".
El archivo central se coloca en el directorio de trabajo actual del proceso, sujeto a permisos de escritura para el proceso JVM y espacio libre en disco.
Dependiendo del nivel de kernel, hay disponible una opción útil de kernel que le da a los corefiles nombres más significativos. Como usuario root, la opción sysctl -w kernel.core_users_pid = 1 asegura que los archivos principales tengan un nombre con la forma "Core.PID".
Si desea archivos centrales, debe restablecerlos en su propio .bash_profile:
permitiría archivos principales pero los limitaría a 50,000 bytes.
Tienes más control de los archivos principales en
/proc/sys/kernel/
Por ejemplo, puede eliminar el etiquetado en pid por
Los archivos principales solo se denominarán "núcleo". La gente hace cosas así para que un usuario pueda optar por colocar un archivo no editable llamado "núcleo" en directorios donde no desea generar volcados de núcleo. Eso podría ser un directorio (mkdir core) o un archivo (touch core; chmod 000 core).
Pero quizás lo más interesante es que puedes hacer:
Todos los archivos core se envían a
/tmp/corefiles
(no cambies core_uses_pid si haces esto).Prueba esto con un script simple:
En Ubuntu, la creación de archivos principales se controla a través del archivo
/etc/default/collectd
. Puede habilitar la creación de volcados de núcleo configurando:Ubicando el archivo central
Una vez que el daemon se bloqueó, se creará un archivo en su directorio de trabajo actual. Por defecto, esto es
pkglocalstatedir
, es decirprefix/var/lib/collectd
. Si instaló un paquete, este directorio es muy probable/var/lib/collectd
.Fuentes: AP Lawrence e IBM
fuente