GNU/Linux >> Tutoriales Linux >  >> Linux

¿Núcleo volcado, pero el archivo principal no está en el directorio actual?

Leer /usr/src/linux/Documentación/sysctl/kernel.txt.

core_pattern se utiliza para especificar un nombre de patrón de archivo de volcado de núcleo.

  • Si el primer carácter del patrón es '|', el kernel tratará el resto del patrón como un comando para ejecutar. El volcado del núcleo se escribirá en la entrada estándar de ese programa en lugar de en un archivo.

En lugar de escribir el volcado del núcleo en el disco, su sistema está configurado para enviarlo al abrt (que significa:Herramienta de notificación automática de errores, no programa "abortar") en su lugar. Es posible que la herramienta de notificación automática de errores no esté tan documentada como debería...

En cualquier caso, la respuesta rápida es que debería poder encontrar su archivo principal en /var/cache/abrt , donde abrt lo almacena después de ser invocado. De manera similar, otros sistemas que usan Apport pueden almacenar núcleos en /var/crash , y así sucesivamente.


En Ubuntu reciente (12.04 en mi caso), es posible que se imprima "Error de segmentación (núcleo volcado)", pero no se produce ningún archivo central donde podría esperar uno (por ejemplo, para un programa compilado localmente).

Esto puede suceder si tiene un límite de tamaño de archivo central de 0 (no ha hecho ulimit -c unlimited ) -- este es el valor predeterminado en Ubuntu. Normalmente, eso suprimiría el "(núcleo volcado)", lo que le indicaría su error, pero en Ubuntu, los archivos del núcleo se canalizan a Apport (el sistema de informes de fallas de Ubuntu) a través de /proc/sys/kernel/core_pattern , y esto parece causar el mensaje engañoso.

Si Apport descubre que el programa en cuestión no es uno, debería informar fallas (lo que puede ver que sucede en /var/log/apport.log ), vuelve a simular el comportamiento predeterminado del kernel de colocar un archivo central en el cwd (esto se hace en el script /usr/share/apport/apport ). Esto incluye respetar ulimit, en cuyo caso no hace nada. Pero (supongo) en lo que se refiere al núcleo, se generó un archivo central (y se canalizó para que lo aporte), de ahí el mensaje "Error de segmentación (núcleo descargado)".

En última instancia, PEBKAC por olvidarse de configurar ulimit, pero el mensaje engañoso me hizo pensar que me estaba volviendo loco por un tiempo, preguntándome qué estaba consumiendo mis archivos principales.

(También, en general, la página del manual core(5) -- man 5 core -- es una buena referencia para saber dónde termina su archivo principal y las razones por las que podría no escribirse).


Linux
  1. Cómo encontrar el archivo más antiguo en un árbol de directorios en Linux

  2. ¿Compara directorios pero no contenido de archivos?

  3. Python:no existe tal archivo o directorio, ¡pero puedo verlo!?

  4. ¿El comando Shuf File> File deja un archivo vacío, pero comandos similares no?

  5. ¿Cómo crear una nueva ventana en el directorio actual en Tmux?

¿Cómo copiar un archivo de otro directorio al actual?

¿Cómo obtengo el directorio absoluto de un archivo en bash?

¿Cómo salir del explorador de archivos Ranger para volver al símbolo del sistema pero mantener el directorio actual?

sudo -i pero mantener el directorio de trabajo actual

¿Por qué el directorio raíz se indica con un signo /?

¿Cómo copio un árbol de directorios pero no los archivos en Linux?