Registros do kernel na falha de energia

2

Eu queria saber se era possível ter um documento de programa de log uma falha de energia aleatória. Obviamente, não haverá tempo para registrar quando a energia falhar, mas será que há uma maneira de reconhecer uma falha de energia ocorrida durante a reinicialização após a falha? Eu sei que a Red Hat (e Linux em geral) tem alguns logs muito bons ( /var/log ) mas eu não acho que tenha algum programa de log nativo que possa lidar com uma falha de energia.

Se não houver um programa de registro, também estive debatendo a alteração dos scripts de inicialização. O BIOS está configurado para sempre estar ligado; por isso, se ocorrer uma falha de energia, reinicia automaticamente.

A única hora em que o sistema estará desligado é se ocorrer uma falha de energia; nunca será desligado manualmente.

Portanto, eu estava pensando em adicionar algo (simples como um comando mail ) aos scripts de inicialização porque cada inicialização após a primeira inicialização marca uma falha de energia. Infelizmente, não sei qual arquivo ou local ou a sintaxe real de tal comando seria.

    
por skamazin 18.08.2014 / 14:17

2 respostas

2

Is there a way to recognize a power failure occurred when it reboots after the failure?

Veja o "Tipo de Despertar" do SMBIOS DMI.

$ sudo dmidecode | fgrep 'Wake-up Type'
    Wake-up Type: AC Power Restored

Você pode recuperar isso programaticamente via / sys / fireware / dmi / entries / 1-0 /…

    
por 01.11.2016 / 06:57
0

As reinicializações são documentadas no diário do sistema em sistemas que usam systemd (por exemplo, RHEL 7, Fedora). Você pode procurá-los via:

# journalctl --list-boots
[..]
0 51545e9739db4eb1ab602dd338a937b1 Wed 2014-08-06 10:58:04 CEST—Mon 2014-08-18 22:31:43 CEST

Tradicionalmente, as reinicializações também são documentadas via wtmp, ou seja, você pode exibi-las com o comando last :

# last
[..]
reboot   system boot  3.11.10-301.fc20 Wed Jun  4 08:15 - 18:43  (10:27)

(Saída de um sistema Fedora 20)

A página man do Ubuntu para last explica este mecanismo:

   The pseudo user reboot logs in each time the system is rebooted.   Thus
   last  reboot will show a log of all reboots since the log file was cre‐
   ated.

(Dependendo da sua distribuição, o arquivo wtmp pode ser rotacionado durante um longo período de tempo, de modo que a última reinicialização não seja exibida)

Para receber notificações de reinicializações, você pode configurá-las indiretamente por meio de um cron job, por exemplo:

#!/bin/bash
set -e
set -u
uptime=$(awk '{print $1}' /proc/uptime)
if [ -f /var/tmp/last_uptime ]; then
  last_uptime=$(cat /var/tmp/last_uptime)
  if [ $uptime -lt $last_uptime ]; then
    echo System was rebooted
    exit 1
  fi
fi
echo $uptime > /var/tmp/last_uptime

Como alternativa, você pode executar um comando de email como parte do processo de inicialização. Com systemd pode ser feito assim:

# echo 'echo Just rebooted at $(date) | mail juser@example' >> /etc/rc.d/rc.local
# chmod 755 /etc/rc.d/rc.local

Outras distribuições que usam algo diferente de systemd podem executar /etc/rc.local no final da seqüência de inicialização.

    
por 18.08.2014 / 23:05