Есть ли способ узнать, сколько раз мой компьютер перезагружался за 24 часа?

5

Я занимался 24-часовым программированием, мне приходилось много раз перезагружаться, и мне было интересно, есть ли способ точно определить, сколько компьютеров было перезагружено или вышло из строя.

Alex
источник

Ответы:

11

Перезагрузки системы обычно регистрируются в двоичном файле /var/log/wtmp. Самый простой способ прочитать этот файл - использовать lastкоманду, которая печатает такие строки для каждой перезагрузки:

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

поэтому, если вы выдадите запрос last reboot, вы получите список всех перезагрузок, зарегистрированных в вашем wtmpфайле.

mreithub
источник
1
Не нужно grep, просто last rebootотображает записи от "пользователя" reboot.
user80551
Это правда, я просмотрел эту маленькую деталь при чтении lastman-страницы сегодня (я ожидал, что это будет значение параметра, а не простой аргумент ...)
mreithub
8

Вы можете вызвать напрямую

 last reboot

Псевдопользовательская перезагрузка регистрируется каждый раз при перезагрузке системы. Таким образом, последняя перезагрузка покажет журнал всех перезагрузок с момента создания файла журнала.

кроме того, он дает время, с которого запускается файл журнала ( /var/log/wtmp). Если вас также интересует прошлое, обычно там хранятся один или несколько файлов с прошлыми журналами ( /var/log/wtmp.1) ...


Ниже приведен небольшой пример скрипта для подсчета количества перезагрузок и сбоев за один день.
Вы можете запустить его, /bin/bash Myscript.shчтобы получить результаты на сегодня или /bin/bash Myscript.sh "Tue May 20"20 мая

#!/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"

Примечания: с перезагрузкой у вас мало проблем, потому что при каждой перезагрузке по одной строке.
Этот счетчик сбоя является только ориентировочным: в случае сбоя вы можете иметь много строк (например, по одной на каждую оболочку). Более того, если сбой не является внезапным, у вас может быть разное время для одного и того же сбоя (возможно, секунда или минута, если он находится на границе). Более того, даже если это случается реже, вы можете сделать аварийное завершение оболочки без сбоя системы. Опция сортировки пытается убить повторяющиеся строки за одно и то же время. Чтобы получить правильный результат, вы должны считать перезагрузкой только строки перезагрузки без сбоев между ними, а также перезагрузку с сбоем ранее.

Hastur
источник
0

Легко узнать с помощью tuptime , приведу пример:

Tuptime отслеживает закрытие / запуск системы, а также позволяет фильтровать их отчет с заданной отметки времени.

Ну, так как последние 24 часа составляют 86400 секунд, строка выполнения с отрицательным временем в секундах и указанием команды даты в качестве ссылки:

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

Другой интересный вывод - опция table:

$ 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
Rfraile
источник
0

Я сделал скрипт оболочки simpe, который покажет вам, сколько раз наша система перезагружалась за день.

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

выход

Мы б

2 раза перезагрузился

Акаша
источник