SystemdDoctor
мешает работе журнал python частое

Журнал службы пуст, хотя приложение работает

Программы буферизуют вывод, когда он идёт не в терминал. У службы вывод идёт в журнал, поэтому строки появляются не сразу, а порциями — а при падении могут потеряться вовсе.

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

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

  1. Вывод буферизуется по блокам

    Стандартная библиотека переключается на блочную буферизацию, когда вывод не в терминал. Строки копятся до заполнения буфера.

  2. Приложение пишет в свой файл, а не в поток вывода

    Тогда журнал systemd честно пуст: сообщения идут в другое место.

  3. Вывод отключён параметром

    Значение null отбрасывает вывод целиком. При разборе это выглядит как молчащая служба.

Диагностика

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

Появляется ли вывод в реальном времени.

journalctl -u myapp.service -f

Куда идёт вывод и отключена ли буферизация.

systemctl show myapp.service -p StandardOutput -p StandardError -p Environment

Решение

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

1. Вывод буферизуется по блокам
Почему происходит
Стандартная библиотека переключается на блочную буферизацию, когда вывод не в терминал. Строки копятся до заполнения буфера.
Как проверить
Посмотрите, появляется ли вывод при работе.
journalctl -u myapp.service -f --no-pager | head -5
Как исправить
Отключите буферизацию в приложении: для Python это переменная окружения, для многих программ — ключ запуска.
[Service]
Environment=PYTHONUNBUFFERED=1
2. Приложение пишет в свой файл, а не в поток вывода
Почему происходит
Тогда журнал systemd честно пуст: сообщения идут в другое место.
Как проверить
Посмотрите настройки вывода приложения.
systemctl show myapp.service -p StandardOutput
sudo ls -l /var/log/myapp/ 2>/dev/null
Как исправить
Либо читайте собственный файл приложения, либо переведите его на вывод в поток: журнал systemd даёт метки времени и фильтрацию.
3. Вывод отключён параметром
Почему происходит
Значение null отбрасывает вывод целиком. При разборе это выглядит как молчащая служба.
Как проверить
Посмотрите параметры вывода.
systemctl show myapp.service -p StandardOutput -p StandardError
Как исправить
Верните вывод в журнал хотя бы на время разбора.

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

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

$ journalctl -u myapp.service -n 5 --no-pager
systemd[1]: Started myapp.service - My application.
# больше ничего, хотя приложение обрабатывает запросы

$ systemctl show myapp.service -p Environment -p StandardOutput
Environment=
StandardOutput=null

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

Источники

  • systemd.exec(5)
    StandardOutput= и вывод службы в журнал.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено приложением на python без отключения буферизации.
    собственная проверка, systemd 255
    сверено 15 сентября 2026