SystemdDoctor
мешает работе логи журнал

rsyslog: ошибка файла состояния при чтении журнала

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Файл состояния повреждён или удалён

    При потере позиции модуль начинает чтение заново или с конца, в зависимости от настроек.

  2. Нет прав на каталог состояния

    Служба работает от своего пользователя. Без права записи позиция не сохраняется, и после перезапуска чтение начинается заново.

  3. Записи дублируются после каждого перезапуска

    Чтение с начала при потере позиции даёт полный дубль журнала в текстовых файлах.

Диагностика

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

Сообщения приёмника о чтении журнала.

journalctl -u rsyslog -n 30 --no-pager

Файл состояния и его владелец.

sudo ls -l /var/lib/rsyslog/

Каталог состояния и пользователь службы.

systemctl show rsyslog -p StateDirectory -p User

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Файл состояния повреждён или удалён
Почему происходит
При потере позиции модуль начинает чтение заново или с конца, в зависимости от настроек.
Как проверить
Посмотрите файл состояния и сообщения службы.
sudo ls -l /var/lib/rsyslog/ 2>/dev/null
journalctl -u rsyslog -n 20 --no-pager | grep -iE "imjournal|state"
Как исправить
Восстановите каталог состояния с верным владельцем и перезапустите приёмник. Каталог должен быть на постоянном разделе.
2. Нет прав на каталог состояния
Почему происходит
Служба работает от своего пользователя. Без права записи позиция не сохраняется, и после перезапуска чтение начинается заново.
Как проверить
Посмотрите права и пользователя службы.
sudo ls -ld /var/lib/rsyslog 2>/dev/null
systemctl show rsyslog -p User -p StateDirectory
Как исправить
Объявите каталог состояния через StateDirectory=: systemd выставит владельца при каждом запуске.
3. Записи дублируются после каждого перезапуска
Почему происходит
Чтение с начала при потере позиции даёт полный дубль журнала в текстовых файлах.
Как проверить
Посмотрите размер файлов приёмника и время перезапусков.
sudo ls -l /var/log/syslog 2>/dev/null
systemctl show rsyslog -p ExecMainStartTimestamp -p NRestarts
Как исправить
Наладьте сохранение позиции. Если приёмник нужен только для внешней отправки, дублирование означает двойной расход канала.

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

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

rsyslogd[10700]: imjournal: open() failed for path: '/var/lib/rsyslog/imjournal.state': Permission denied [v8.2312.0]
rsyslogd[10700]: imjournal: journal reloaded, reading from the beginning [v8.2312.0]

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация rsyslog: модуль чтения журнала документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено каталогом состояния без права записи.
    собственная проверка, systemd 255
    сверено 15 сентября 2026