SystemdDoctor
StandardOutput= [Service]

StandardOutput= и StandardError= в systemd

Определяют, куда направляется стандартный вывод и поток ошибок процессов службы. По умолчанию всё идёт в журнал systemd и читается через journalctl.

Что делает

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

Запись в файл требует префикса: append:/путь дописывает, truncate:/путь очищает при запуске, file:/путь — то же, что append, но без гарантии дописывания при перезапуске. Путь без префикса недопустим.

Где ставится. В секции [Service].

Значения

ЗначениеЧто происходит
journalпо умолчанию: вывод в журнал systemd.
nullвывод отбрасывается.
append:/var/log/myapp/out.logдописывать в файл.
truncate:/var/log/myapp/out.logочищать файл при каждом запуске.
inheritнаследовать от родителя; для stderr — брать из stdout.
syslogобъявлено устаревшим с systemd 246, работает как journal.

По умолчанию: journal

Пример

Служба с очень подробным выводом — в отдельный файл.

[Service]
LogsDirectory=myapp
StandardOutput=append:/var/log/myapp/out.log
StandardError=journal

Каталог создаёт systemd через LogsDirectory=, поэтому права на него будут правильными. Ошибки при этом остаются в журнале — их удобнее искать там.

Типичные ошибки

Путь без префикса (StandardOutput=/var/log/app.log) недопустим: unit не загрузится.

Отсутствующий каталог даёт код 209/STDOUT при запуске: systemd создаёт файл, но не каталоги.

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

Значение syslog устарело: пишите journal.

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

  • status=209/STDOUT в systemdКод 209/STDOUT: systemd не смог настроить стандартный вывод службы. Чаще всего виноват путь в StandardOutput=append: или file:.
  • status=222/STDERR в systemdКод 222/STDERR: не удалось настроить поток ошибок службы. Разбор причин и отличие от кода 209.
  • status=240/LOGS_DIRECTORY в systemdКод 240/LOGS_DIRECTORY: не удалось подготовить каталог журналов службы в /var/log из LogsDirectory=.
  • Read-only file system в журнале службыСлужба не может писать: файловая система только для чтения. Разбор: параметры изоляции unit, монтирование ro, ошибки файловой системы.

Рядом стоящие параметры

Источники

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