Existe uma maneira de saber quantas vezes meu computador foi reinicializado em um período de 24 horas?

5

Eu estava fazendo um code-a-thon de 24 horas e tive que reiniciar várias vezes e queria saber se havia uma maneira de dizer exatamente quantos computadores foram reinicializados ou travados.

    
por Alex 25.05.2014 / 12:20

4 respostas

11

As reinicializações do sistema geralmente são registradas no arquivo binário /var/log/wtmp . A maneira mais fácil de ler esse arquivo é usando o comando last , que imprime linhas como essa para cada reinicialização:

reboot   system boot  3.10-3-amd64     Fri May  2 19:30 - 21:02 (5+01:32)   

então se você emitir last reboot , você obterá uma lista de todas as reinicializações registradas no seu arquivo wtmp .

    
por 25.05.2014 / 12:46
8

Você pode invocar diretamente

 last reboot

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 created.

fornece também a hora a partir da qual inicia o arquivo de log ( /var/log/wtmp ). Se você também está interessado no passado, normalmente há um ou mais arquivos armazenados com registros anteriores ( /var/log/wtmp.1 ) ...

Abaixo, um pequeno script de exemplo para contar o número de reinicializações e falhas em um dia.
Você pode executá-lo com /bin/bash Myscript.sh para obter os resultados de hoje ou /bin/bash Myscript.sh "Tue May 20" para ter resultados para o 20 de maio

#!/bin/bash

Today='date'
StrDay=${1:-${Today:0:10}}

N_Crash='last -F  |grep crash  |  grep "$StrDay"  | sort -k 7 -u | wc -l'
N_Reboot='last -F | grep reboot | grep "$StrDay"  | wc -l '

echo "# Today $Today  Report for crash and reboot on $StrDay  "
echo "# Crashes $N_Crash"
echo "# Reboot $N_Reboot"

Notas: com reboot você tem poucos problemas porque há uma linha cada vez que você reinicia.
Essa contagem de falhas é apenas indicativa: você pode ter várias linhas (por exemplo, uma para cada shell) em caso de falha. Ainda mais, se a falha não for abrupta, você pode ter tempos diferentes para a mesma falha (talvez um segundo ou um minuto, se estiver no limite). Além disso, mesmo que isso seja mais raro, você pode fazer um crash shell sem um crash do sistema. A opção de classificação tenta matar as linhas duplicadas ao mesmo tempo. Para ter um resultado correto, você deve contar como reinicializar apenas as linhas de reinicialização, sem travar entre e como travar a reinicialização com uma falha antes.

    
por 25.05.2014 / 14:50
0

Fácil de saber com tuptime , deixe-me dar um exemplo:

O Tuptime rastreia o comportamento de desligamento / inicialização do sistema, além disso, permite filtrar seu relatório desde um determinado timestamp.

Bem, como as últimas 24 horas são 86400 segundos, a linha de execução com o tempo de segundos em negativo e o comando de data como referência será:

$ date && tuptime  --tsince -86400
dom ene  7 10:13:06 CET 2018
System startups:    3   since   10:13:06 06/01/18
System shutdowns:   2 ok   -   0 bad
System uptime:      3.42 %   -   49 minutes and 16 seconds
System downtime:    96.58 %   -   23 hours, 10 minutes and 44 seconds
System life:        1 day, 0 hours, 0 minutes and 0 seconds
...

Outra saída interessante é passar a opção da tabela:

$ tuptime  --tsince -86400 -t
No.         Startup Date                      Uptime       Shutdown Date   End                              Downtime

78                                                                        OK    3 hours, 23 minutes and 11 seconds
79   13:51:57 06/01/18   10 minutes and 54 seconds   14:02:51 06/01/18    OK   19 hours, 31 minutes and 53 seconds
80   09:34:44 07/01/18    54 minutes and 2 seconds
    
por 07.01.2018 / 10:33
0

Eu fiz um script de shell do simpe que mostrará o número de vezes que nosso sistema foi reinicializado por dia.

#!/bin/bash
day=$(date | awk {'print $1 " " $3 " " $2'})
echo $day
reboot_times=$(last reboot | grep "$day" | wc -l)
echo $reboot_times times rebooted

saída

Qua

2 vezes reinicializado

    
por 15.08.2018 / 12:29