systemd Linux с systemd (конкретный дистрибутив и версия могут отличаться)

Как безопасно собрать логи journalctl для неработающего сервиса

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

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

В этой статье
  1. Как распознать проблему и где применимы действия
  2. Возможные причины и диагностические признаки
  3. Пошаговая диагностика и исправление
  4. Как проверить, что проблема действительно устранена
  5. Если результат не получен

#Как распознать проблему и где применимы действия

Нужно собрать журналы неработающей службы для диагностики или обращения в поддержку так, чтобы не раскрыть пароли, токены, адреса клиентов и содержимое приватных файлов. Перед выполнением определите название программы, редакцию Linux и управляющий сервис. Значения примеров в командах не являются готовой конфигурацией вашего устройства.

#Возможные причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Собраны записи не того запускаНомер загрузки и имя службы не указаныВыбрать -b и -u с точным именем
У журнала ограничен доступПользователь видит No entries или часть событийПри необходимости выполнить просмотр с полномочиями администратора
Лог содержит конфиденциальные данныеВ записях присутствуют URL с токенами и параметры приложенияОчистить копию перед отправкой, оригинал сохранить локально

#Пошаговая диагностика и исправление

  1. Шаг 1. Проверьте точное имя службыНайдите service из systemctl; если неизвестно имя, выполните list-units и запишите его целиком. Не собирайте весь системный журнал, когда проблема у одной службы.
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    systemctl list-units --type=service --all --no-pager | head -n 65
  1. Шаг 2. Запишите текущее состояниеstatus покажет основной код отказа, PID и последние строки. Если состояние inactive без failed, это может быть штатный oneshot — проверьте Type и ExecMainStatus.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    UNIT='имя.service'; systemctl show "$UNIT" -p ActiveState -p SubState -p Result -p ExecMainStatus
  1. Шаг 3. Выберите загрузку и интервалКоманда -b относится к текущей загрузке, --since ограничивает время, -o short-iso даёт дату и пояс; если сбой произошёл вчера, выберите -b -1 и уточните интервалы. В журнале могут находиться секреты.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    UNIT='имя.service'; journalctl -b -u "$UNIT" --since '2 hours ago' -o short-iso --no-pager
  1. Шаг 4. При необходимости используйте административный просмотрЕсли вывода нет или показаны ограничения прав, проверьте журнал с sudo. Не добавляйте себя в привилегированные группы ради одного обращения и не публикуйте весь журнал. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    UNIT='имя.service'; sudo journalctl -b -u "$UNIT" --since '2 hours ago' --no-pager -o short-iso
  1. Шаг 5. Сохраните локальную копию с закрытым доступомУбедитесь, что есть свободное место; umask 077 даёт файлу права только владельца. Копию сохраняйте в домашней папке, отдельно от публичного каталога сайта.
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    umask 077
    UNIT='имя.service'; journalctl -b -u "$UNIT" --since '2 hours ago' --no-pager -o short-iso > "$HOME/service-diagnostic.log"
  1. Шаг 6. Проверьте и обезличьте копиюПеред отправкой откройте копию в редакторе и удалите пароли, токены, приватные пути, адреса пользователей. Не передавайте закрытые ключи и файлы EnvironmentFile. Для проверки локальной копии используйте stat.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    stat -c '%A %U %s %n' "$HOME/service-diagnostic.log"
    wc -l "$HOME/service-diagnostic.log"

#Как проверить, что проблема действительно устранена

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

#Если результат не получен

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

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.