¿Dónde puedo ver una lista de los procesos eliminados del kernel?


33

¿Hay alguna forma de verificar cuál de mis procesos ha matado el núcleo? A veces, inicio sesión en mi servidor y encuentro que algo que debería haber funcionado toda la noche se detuvo 8 horas y no estoy seguro de si son las aplicaciones o los núcleos.

Respuestas:


30

Si el núcleo eliminó un proceso (porque el sistema se quedó sin memoria), habrá un mensaje de registro del núcleo. Registrarse /var/log/kern.log(en Debian / Ubuntu, otras distribuciones pueden enviar registros del kernel a un archivo diferente, pero generalmente /var/logbajo Linux).

Tenga en cuenta que si se activó el OOM-killer (asesino sin memoria), significa que no tiene suficiente memoria virtual. Agregue más intercambio (o quizás más RAM).

Algunos bloqueos del proceso también se registran en los registros del kernel (por ejemplo, fallas de segmentación).

Si los procesos se iniciaron desde cron, debería tener un correo con mensajes de error. Si los procesos se iniciaron desde un shell en una terminal, verifique los errores en esa terminal. Ejecute el proceso screenpara ver la terminal nuevamente en la mañana. Esto podría no ayudar si el OOM-killer se disparó, porque también podría haber matado el proceso cron o pantalla; pero si te topaste con el OOM-killer, ese es el problema que debes solucionar.


¿Cómo es el mensaje de matanza de hilos /var/log/kern.log?
Abeja

12

Contabilidad de procesos podría ayudar aquí.

En breve:

apt-get install acct

Luego prueba comandos como:

lastcomm
sa

o en Ubuntu:

lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct

Ver:

ACTUALIZAR

Curiosamente, el pacctarchivo tiene información sobre el estado de salida, pero lastcommni saparece imprimirlo.

Por lo que puedo ver, tendrías que escribir tu propio programa en C para acceder a la información.

ACTUALIZACIÓN 2

Aquí hay una versión que imprime el código de salida.

Los dos últimos campos son "S" para señalizado y "E" para salir, seguido por el número de señal o el estado de salida.

Entonces, en su caso, probablemente esté buscando "S 15", lo que significa que obtuvo un SIGTERM.

sleep                X mikel    stdin      0.00 secs Fri Mar 25 20:15 S  15

En comparación con "E 0", lo que significa que el proceso salió sin un error.

true                   mikel    stdin      0.00 secs Fri Mar 25 20:16 E   0

Solo mínimamente probado.


-1

servicio de sudo --status-all

Este comando le indicará cuáles son los servicios que se están ejecutando actualmente y cuáles no se han iniciado o detenido.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.