SystemdDoctor
StandardInput= [Service]

StandardInput= в systemd: откуда служба читает ввод

Определяет, откуда процессы службы читают стандартный ввод. Для обычных служб это null: ввода нет, и попытка чтения даёт конец файла.

Что делает

Менять значение нужно редко. Основные случаи: передать службе данные из файла, привязать ввод к сокету при активации «по соединению», или передать короткий текст прямо из unit-файла через StandardInputText=.

Привязка ввода к терминалу для служб почти всегда ошибка: в контейнере и на сервере без консоли это даёт отказ запуска с кодом 208/STDIN.

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

Значения

ЗначениеЧто происходит
nullпо умолчанию: ввода нет.
file:/var/lib/myapp/input.txtчитать из файла.
socketввод из соединения при Accept=yes в сокете.
ttyпривязка к терминалу; для служб почти всегда ошибка.
StandardInputText=строкапередать текст прямо из unit-файла.

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

Пример

Передача короткого задания службе прямо из unit-файла.

[Service]
Type=oneshot
StandardInputText=SELECT count(*) FROM orders;
ExecStart=/usr/bin/psql -U app -d shop

Для многострочного текста параметр можно повторять: строки будут переданы по порядку.

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

Значение tty в контейнере или на машине без консоли даёт код 208/STDIN.

Ввод из сокета работает только в режиме «по соединению» (Accept=yes).

Секреты через StandardInputText= передавать не стоит: значение видно в systemctl show.

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

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

Источники

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