Якак получить время последней загрузки?

Вопрос или проблема

У меня есть Raspberry Pi. У меня работает crontab, который перезагружает его каждый день в полдень (sudo reboot now).

Вот результат last reboot -F:

myuser@mypiname:~ $ last -F reboot
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970   still running
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970   still running
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970   still running
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Tue Oct 27 12:00:33 2020 (18562+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Tue Oct 27 12:00:03 2020 (18562+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 26 12:01:00 2020 (18561+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 26 12:00:31 2020 (18561+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 26 12:00:03 2020 (18561+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 26 12:00:03 2020 (18561+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 26 12:00:03 2020 (18561+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sun Oct 25 12:00:33 2020 (18560+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sun Oct 25 12:00:03 2020 (18560+11:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sat Oct 24 12:00:33 2020 (18559+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sat Oct 24 12:00:04 2020 (18559+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Fri Oct 23 12:00:03 2020 (18558+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct 22 12:00:44 2020 (18557+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct 22 12:00:11 2020 (18557+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Wed Oct 21 12:00:06 2020 (18556+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Tue Oct 20 12:00:33 2020 (18555+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Tue Oct 20 12:00:04 2020 (18555+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 19 12:00:33 2020 (18554+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 19 12:00:03 2020 (18554+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sun Oct 18 12:00:04 2020 (18553+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sat Oct 17 12:00:04 2020 (18552+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Fri Oct 16 12:00:33 2020 (18551+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Fri Oct 16 12:00:03 2020 (18551+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Fri Oct 16 12:00:03 2020 (18551+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct 15 12:00:34 2020 (18550+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct 15 12:00:04 2020 (18550+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Wed Oct 14 12:00:04 2020 (18549+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Wed Oct 14 12:00:04 2020 (18549+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Wed Oct 14 12:00:04 2020 (18549+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Tue Oct 13 12:00:33 2020 (18548+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Tue Oct 13 12:00:03 2020 (18548+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 12 12:00:36 2020 (18547+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct 12 12:00:04 2020 (18547+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sun Oct 11 12:00:34 2020 (18546+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sun Oct 11 12:00:04 2020 (18546+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sat Oct 10 12:00:33 2020 (18545+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sat Oct 10 12:00:04 2020 (18545+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Fri Oct  9 12:02:03 2020 (18544+10:02)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Fri Oct  9 12:00:04 2020 (18544+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  8 12:00:34 2020 (18543+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  8 12:00:04 2020 (18543+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Wed Oct  7 12:00:33 2020 (18542+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Wed Oct  7 12:00:04 2020 (18542+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Tue Oct  6 12:00:04 2020 (18541+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct  5 17:38:18 2020 (18540+15:38)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Mon Oct  5 12:00:04 2020 (18540+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sun Oct  4 12:00:33 2020 (18539+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sun Oct  4 12:00:03 2020 (18539+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Sat Oct  3 12:00:04 2020 (18538+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Fri Oct  2 12:00:03 2020 (18537+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Fri Oct  2 12:00:03 2020 (18537+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  1 18:07:11 2020 (18536+16:07)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  1 18:07:11 2020 (18536+16:07)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  1 18:07:11 2020 (18536+16:07)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  1 18:07:11 2020 (18536+16:07)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  1 18:07:11 2020 (18536+16:07)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  1 12:01:00 2020 (18536+10:00)
reboot   system boot  4.19.66-v7+      Thu Jan  1 01:00:01 1970 - Thu Oct  1 12:00:31 2020 (18536+10:00)

wtmp begins Thu Oct  1 10:28:43 2020

Я отключил свой Raspberry Pi около 14:00 сегодня (27/10/2020 13:55:XX), но здесь не отображается, что он был отключен (возможно, потому что это не перезагрузка).

Как мне получить время последней загрузки вместо времени последней перезагрузки? Также я хотел бы иметь “все” времена загрузки, а не только последние.

Я пробовал last boot -F, но это ничего не показало.

Получение времени загрузки

Первая проблема, с которой вы столкнетесь на Pi, в том, что логи загрузки создаются до того, как устройство получает время от сетевого временного сервера. У устройства нет аккумуляторного часов, поэтому оно начинает с 1970-01-01T00:00 (это также нарушает who -b).

Вторая дата в ваших и моих логах выглядит разумно, но это время завершения работы.

Вам нужно найти способ записывать времена загрузки на этом устройстве.

Идея

uptime --since дает правильное время загрузки (если система сейчас имеет правильное время).

Загрузка или перезагрузка

Следующий вопрос: что вы имеете в виду под перезагрузкой и загрузкой? Есть только загрузка. Тем не менее, мы можем посмотреть, была ли перезагрузка перед этим. Мы можем посмотреть разницу во времени. Мы можем (и я не знаю, если это записано) увидеть, какой тип завершения работы, это было завершение работы типа перезагрузки?

Я выбрал другое решение. Мне не нужно точное время для загрузок, поэтому я решил использовать cron, чтобы записывать время при загрузке:

@reboot  echo "Перезагрузка в $(date)" >> /path/to/some/file

На это меня вдохновил комментарий от @ctrl-alt-delor.

Попробуйте

 $ who -b

вы получите время последней загрузки.

Используя Debian 12 (bookworm), запись в journalctl для перезагрузок не имеет временной метки, но первая запись с временной меткой, похоже, одинаковая каждый раз:

Nov 09 11:40:41 MyComputer systemd[671]: Started gvfs-gphoto2-volume-monitor.service - Virtual filesystem service - digital camera monitor.
-- Boot af06f90ea6ee4260821ec76c6692a300 --
Nov 09 18:26:14 MyComputer systemd[670]: Queued start job for default target default.target.

Итак, вы можете использовать:

journalctl | grep -i -a "Queued start job for default target default.target."

чтобы получить список всех времен перезагрузки.

На дистрибутивах с системой инициализации systemd вы можете просто

$ journalctl --list-boots
 -5 4b6cd0121327454ca3db035c7ed42df6 Fri 2018-02-09 16:56:09 MST—Sat 2018-02-10 07:55:14 M
 -4 0d56207f9ec0405ca3a3fd638334de2f Sat 2018-02-10 07:55:32 MST—Mon 2018-02-12 22:16:05 M
 -3 0f230cc546fd4aec8f5233e0074ab3e1 Tue 2018-02-13 03:57:20 MST—Wed 2018-02-14 22:58:56 M
 -2 c0d2c0141dd840cbab75d3c2254f8781 Wed 2018-02-14 22:59:13 MST—Sat 2018-02-17 22:46:14 M
 -1 aafb2573a6374e019a7165cb8eee74a0 Sun 2018-02-18 06:02:03 MST—Mon 2018-02-19 04:16:36 M
  0 8462f1969c6f4d61973e7e245014b846 Mon 2018-02-19 04:16:53 MST—Wed 2018-02-21 04:07:07 M

Из руководства:

--list-boots Показывает табличный список номеров загрузок (относительно текущей загрузки), их идентификаторов и временных меток первого и последнего сообщения, относящегося к загрузке.

Чтобы отобразить логи последней загрузки, используйте -x для дополнительных объяснений, -e для перехода в конец постраничного вывода, -p для фильтрации по приоритету:

journalctl -xe -b -1 -p err

Примечания

Ответ или решение

Как получить время последней загрузки на Raspberry Pi?

Если вы используете Raspberry Pi и хотите узнать время последней загрузки, есть несколько методов и инструментов, которые помогут вам в этом.

1. Проблема с временной меткой

Начнем с того, что в вашей системе наблюдается проблема с временными метками после перезагрузки. Это связано с тем, что Raspberry Pi не имеет батарейного резервного механизма для поддержания времени и начинает отсчет времени с 1970-01-01. Таким образом, значительные изменения времени между началом записи и установкой правильного времени могут привести к некорректным результатам.

2. Использование команды who -b

Для получения времени последней загрузки можно использовать простую команду:

who -b

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

3. Логи системы с использованием journalctl

На системах, использующих systemd, вы можете воспользоваться командой journalctl для отображения информации о загрузках:

journalctl --list-boots

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

Если вам нужно получить более детальную информацию о предыдущих загрузках, вы можете использовать:

journalctl -b -1

Здесь -1 указывает на предыдущую загрузку.

4. Логирование загрузки через cron

Если вам нужно отслеживать время загрузки системы более надежным способом, вы можете настроить cron для записи времени загрузки в файл каждый раз, когда система загружается:

@reboot echo "Перезагрузка в $(date)" >> /path/to/some/file

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

5. Другие инструменты для мониторинга

Если вам необходимо больше информации о состояниях перезагрузки и времени, вы можете установить и использовать утилиты мониторинга системы, такие как uptime. Команда:

uptime --since

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

Заключение

Получение времени последней загрузки на Raspberry Pi может потребовать использования различных инструментов и методов замеров. Начните с простых команд, таких как who -b, и переходите к более сложным, таким как использование journalctl или логирование с помощью cron, если стандартные команды не дают нужного результата. Поддержание правильного системного времени также критично для корректного логирования, поэтому убедитесь, что ваш Raspberry Pi синхронизирован с сетевыми временными серверами.

Оцените материал
Добавить комментарий

Капча загружается...