Por ejemplo, estoy viendo esto en /var/log/messages
:
Mar 01 23:12:34 hostname shutdown: shutting down for system halt
¿Hay alguna manera de averiguar qué causó el cierre? Por ejemplo, ¿se ejecutó desde la consola, o alguien presionó el botón de encendido, etc.?
/var/log/acpid
: resultó que el botón de encendido fue golpeado. ¿Alguna otra idea, dónde buscar si acpid no da una pista?Respuestas:
Solo los programas con privilegios de root pueden apagar un sistema con gracia. Entonces, cuando un sistema se apaga de manera normal, es un usuario con privilegios de root o un script acpi. En ambos casos, puede averiguarlo revisando los registros. Un apagado acpi puede ser causado por presionar el botón de encendido, sobrecalentamiento o batería baja (laptop). Olvidé la tercera razón, el software de UPS cuando falla la fuente de alimentación, que enviará una alerta de todos modos.
Recientemente tuve un sistema que comenzó a apagarse repetidamente sin gracia, resultó que se estaba sobrecalentando y el mobo estaba configurado para apagarse temprano. El sistema no tuvo la oportunidad de guardar registros, pero afortunadamente el monitoreo de la temperatura del sistema mostró que estaba comenzando a aumentar justo antes de apagarse.
Entonces, si es un apagado normal, se registrará, si es una intrusión ... buena suerte, y si es un apagado en frío, su mejor oportunidad para saber es controlar y monitorear su entorno.
fuente
Pruebe los siguientes comandos:
Mostrar la lista de las últimas entradas de reinicio:
last reboot | less
Mostrar la lista de las últimas entradas de apagado:
last -x | less
o más precisamente:
last -x | grep shutdown | less
Sin embargo, no sabrá quién lo hizo. Si desea saber quién lo hizo, deberá agregar un poco de código, lo que significa que lo sabrá la próxima vez.
He encontrado este recurso en línea. Te puede ser útil:
Cómo averiguar quién o qué detuvo mi sistema
fuente
last -x shutdown
Hay un par de cosas para verificar:
Verifique la salida del último comando -x
Ejecute este comando * y compare el resultado con los siguientes ejemplos:
Ejemplos de apagado normal
Un apagado normal y encendido se ve así (tenga en cuenta que tiene un evento de apagado y luego un evento de arranque del sistema):
En algunos casos, puede ver esto (tenga en cuenta que no hay una línea sobre el apagado, pero el sistema estaba en el nivel de ejecución 0, que es el "estado de detención"):
Ejemplos de cierre inesperados
Un apagado inesperado por pérdida de energía se ve así (tenga en cuenta que tiene un evento de arranque del sistema sin un evento de apagado del sistema anterior):
Examine los registros en / var / log
Un comando bash para filtrar los mensajes de registro más interesantes es este:
Cuando se produce un apagado inesperado o una falla de hardware, los sistemas de archivos no se desmontarán correctamente, por lo que en el próximo arranque puede obtener registros como este:
Cuando el sistema se apaga porque el usuario presionó el botón de encendido, obtiene registros como este:
Solo cuando el sistema se apaga ordenadamente, obtiene registros como este:
Cuando el sistema se apaga debido al sobrecalentamiento, obtiene registros como este:
Si tiene un UPS y ejecuta un demonio para monitorear la energía y el apagado, obviamente debe verificar sus registros (NUT inicia sesión en / var / log / messages pero apcupsd inicia sesión en / var / log / apcupsd *)
Notas
*: Aquí está la descripción de
last
su página de manual:Usamos
head
para mantener los últimos 10 eventos y usamostac
para invertir el orden para que no nos confundamos con el hecho de que se imprime desde el evento más reciente hasta el menos reciente.fuente
tac
comandoAlgunos posibles archivos de registro para explorar: (encontré un sistema Ubuntu, pero espero que estén presentes en la mayoría de los sistemas Linux / Unix)
Nuevamente, estos archivos de registro están presentes en un sistema Ubuntu, por lo que los nombres de los archivos pueden ser diferentes. El
tail
comando es tu amigo.fuente
Simplifique usando la
last
visualización de las entradas de apagado del sistema y ejecute cambios de nivel y filtrado enshutdown
yreboot
:fuente
cat foo | grep bar
vsgrep bar foo
tipo de camino, parece que la última es capaz de filtrar en sí.No completamente satisfactorio
Tenía una necesidad similar en un Debian 7.8 y observo que básicamente no hay un mensaje claro y explícito en el registro, lo cual es un poco sorprendente.
Grep through
/var/log
diría la hora en que se apagó la máquina, mostraría el apagado adecuado de los demonios, etc., pero no la razón inicial.Las otras soluciones mencionadas (
last -x
) no ayudaron mucho.Mirando como funciona
Lectura
/etc/acpi/powerbtn-acpi-support.sh
que incluye:Observe que se proporciona un texto explícito como parámetro del
shutdown
comando. Esperaría que la cadena sea registrada automáticamente por el programa de apagado.Ajuste para mejores registros
De todos modos, para obtener un mensaje explícito pongo el texto a continuación (como root) en un
/etc/acpi/powerbtn.sh
ejecutable creado recientemente conchmod a+x /etc/acpi/powerbtn.sh
Hacerlo de esta manera probablemente hará un cambio más duradero que la modificación
/etc/acpi/powerbtn-acpi-support.sh
. La última opción probablemente perdería su efecto en la próxima actualización del paqueteacpi-support-base
.Tenga en cuenta que Ubuntu 14.04 lo hace de manera diferente (
/etc/acpi/powerbtn.sh
ya existe con diferente contenido delacpid
paquete). Además, Debian 8 probablemente lo hace de manera diferente. Siéntase libre de ofrecer variantes.¡Lucro!
Y ahora, cuando se presiona el botón de encendido, aparece una línea como la siguiente
/var/log/messages
,/var/log/syslog
y/var/log/user.log
:Ahora ese es un mensaje explícito en el registro.
fuente
acpi-support-base
y losacpid
paquetes. No me he probado a mí mismo. ¿Puede explicar en qué distribución y versión produce beneficios?Tengo una idea torpe, pero tal vez funcione para usted: ingrese el comando
last
y revise la información de inicio de sesión para todos los usuarios. luego, filtre a los usuarios con el permiso requerido parahalt
que haya iniciado sesión en ese momento. luego revise su.bash_history
archivo para ver si han entrado en alto o no.fuente
En mi caso tuve un problema de sobrecalentamiento y encontré el inicio de sesión en / var / log / syslog por un 'grep shut *' en la carpeta / var / log.
El error registrado fue este:
fuente
Simplemente agregue eso en mi VM KVM (donde me preguntaba si un reinicio del host hizo un apagado limpio de los invitados), encontré lo que necesitaba
/var/log/auth.log
(además delast -x shutdown
mostrar lo mismo). Allí aparecieron estas líneas:last -x
muestra estas líneas, observe que se imprimen en el primer orden más reciente (es decir, lea primero la última línea y luego suba), pero debido al reinicio del reloj (23:56 antes del arranque, 23:55 después) También evidente en las líneas anteriores, el orden parece un poco desconcertante:Por mi parte, verificando que los invitados se apaguen limpiamente cuando se inicia el host, también podría iniciar sesión (ssh) en uno de los invitados y permanecer allí cuando arranque el host, obteniendo estas líneas en la terminal:
fuente
alias el apagado a un script,
el script debe proporcionar todos los parámetros, etc., al ejecutable de apagado original
PERO: el script debe registrarlos.
fuente
last -x
)en mi caso fue el software ups que apaga el servidor.
fuente