Список загрузок с метками времени UNIX через journalctl

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

journalctl имеет флаг -o short-unix, который я могу использовать для изменения формата даты вывода на такие вещи, как -t systemd-sleep.

Но единственный способ, который я нашел, чтобы перечислить загрузки, это --list-boots, но этот вариант, похоже, не подчиняется флагу -o.

Есть ли способ заставить journalctl перечислить загрузки с метками времени unix? Поскольку systemd здесь надолго, я боюсь, что другие методы могут перестать работать в будущем, но я также открыт для таких предложений.

Вы можете, однако, преобразовать эти поля в метки времени unix.
То есть:

journalctl --list-boots | awk '{ d2ts="date -d \""$3" "$4" " $5"\" +%s"; d2ts | getline $(NF+1); close(d2ts)} 1'

Вы можете использовать альтернативный инструмент под названием tuptime, чтобы получить точно такую же информацию. Например:

tuptime -bits

Используемые опции:

-b, показать идентификатор загрузки
-i, номер старта в обратном счете
-t, перечислить жизнь системы в виде таблицы
-s, вывод времени в секундах и эпохе 

И они производят вывод, похожий на:

No.                                Boot ID   Startup T.   Uptime   Shutdown T.   End   Downtime
                                                                                               
 -2   7d11db6e-f840-4d76-b727-7029ac5cf19c   1732303355      106    1732303461   OK       46483
 -1   c89edbf8-32d0-42d3-8dc7-a1d8a6ddb1b7   1732349944    13318    1732363262   OK        8756
  0   09df066a-0a26-41a9-be94-a0823f4e6e53   1732372018     3496

Раскрытие: Я создатель этого инструмента

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

Чтобы получить список загрузок с использованием временных меток Unix с помощью команды journalctl, необходимо учитывать некоторые особенности работы этой утилиты и сопутствующих инструментов.

Использование journalctl для получения информации о загрузках

По умолчанию команда journalctl --list-boots отображает информацию о загрузках, но, к сожалению, она не поддерживает изменение формата вывода в формате временных меток Unix с помощью флага -o. Тем не менее, вы можете использовать комбинацию стандартных инструментов Unix, таких как awk, для преобразования вывода в нужный формат.

journalctl --list-boots | awk '{ d2ts="date -d \""$3" "$4" " $5"\" +%s"; d2ts | getline $(NF+1); close(d2ts)} 1'

В этом примере мы используем awk для обработки вывода journalctl. Скрипт извлекает дату и время, конвертирует их в Unix-время и добавляет результат в последнюю колонку. Давайте рассмотрим детали данного решения:

  • $3, $4, $5: Это колонки, содержащие дату и время из вывода journalctl --list-boots.
  • date -d: Команда, которая преобразует строку даты и времени в Unix-время при помощи формата +%s.
  • getline $(NF+1): Считывает результат преобразования и добавляет его в конец текущей строки.

Альтернативный подход: использование tuptime

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

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

tuptime -bits

Здесь опции означают:

  • -b: отображает идентификатор загрузки.
  • -i: номер старта в обратном порядке.
  • -t: перечисляет время работы системы в виде таблицы.
  • -s: выводит время в секундах и в формате epoch.

Пример вывода tuptime:

No.                                Boot ID   Startup T.   Uptime   Shutdown T.   End   Downtime

 -2   7d11db6e-f840-4d76-b727-7029ac5cf19c   1732303355      106    1732303461   OK       46483
 -1   c89edbf8-32d0-42d3-8dc7-a1d8a6ddb1b7   1732349944    13318    1732363262   OK        8756
  0   09df066a-0a26-41a9-be94-a0823f4e6e53   1732372018     3496

Заключение

В результате, хотя journalctl --list-boots и не поддерживает прямой вывод временных меток Unix, вы можете использовать комбинацию команд Unix для преобразования вывода. Либо вы можете обратиться к утилите tuptime, которая предоставляет аналогичную информацию с удобным форматом. Расширенные возможности tuptime делают её отличным выбором для отслеживания состояния загрузок системы.

Это решение будет актуально и надежно, так как systemd продолжает расширяться и интегрироваться в современные дистрибутивы Linux.

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

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