- Вопрос или проблема
- Получение времени загрузки
- Идея
- Загрузка или перезагрузка
- Примечания
- Ответ или решение
- Как получить время последней загрузки на Raspberry Pi?
- 1. Проблема с временной меткой
- 2. Использование команды who -b
- 3. Логи системы с использованием journalctl
- 4. Логирование загрузки через cron
- 5. Другие инструменты для мониторинга
- Заключение
Вопрос или проблема
У меня есть 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 синхронизирован с сетевыми временными серверами.