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 | lessMostrar la lista de las últimas entradas de apagado:
last -x | lesso más precisamente:
last -x | grep shutdown | lessSin 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 shutdownHay 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
lastsu página de manual:Usamos
headpara mantener los últimos 10 eventos y usamostacpara 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
taccomandoAlgunos 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
tailcomando es tu amigo.fuente
Simplifique usando la
lastvisualización de las entradas de apagado del sistema y ejecute cambios de nivel y filtrado enshutdownyreboot:fuente
cat foo | grep barvsgrep bar footipo 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/logdirí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.shque incluye:si [-x /etc/acpi/powerbtn.sh]; entonces # Compatibilidad con el antiguo script de configuración del paquete acpid /etc/acpi/powerbtn.sh elif [-x /etc/acpi/powerbtn.sh.dpkg-bak]; entonces # Compatibilidad con el antiguo script de configuración del paquete acpid # que todavía existe porque fue cambiado por el administrador /etc/acpi/powerbtn.sh.dpkg-bak más # Manejo normal. / sbin / shutdown -h -P ahora "Botón de encendido presionado" fiObserve que se proporciona un texto explícito como parámetro del
shutdowncomando. 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.shejecutable creado recientemente conchmod a+x /etc/acpi/powerbtn.sh#! / bin / sh registrador en /etc/acpi/powerbtn.sh, presumiblemente "botón de encendido presionado" / sbin / shutdown -h -P ahora "Botón de encendido presionado"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.shya existe con diferente contenido delacpidpaquete). 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/syslogy/var/log/user.log:Ahora ese es un mensaje explícito en el registro.
fuente
acpi-support-basey losacpidpaquetes. 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
lasty revise la información de inicio de sesión para todos los usuarios. luego, filtre a los usuarios con el permiso requerido parahaltque haya iniciado sesión en ese momento. luego revise su.bash_historyarchivo 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 shutdownmostrar lo mismo). Allí aparecieron estas líneas:last -xmuestra 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