SystemdDoctor
служба не работает ввод терминал сокет-активация

status=208/STDIN в systemd

Код 208/STDIN значит, что systemd не сумел подготовить стандартный ввод процесса. У обычных служб ввод почти всегда null, поэтому этот код появляется там, где ввод настроили вручную: привязали к терминалу, к файлу или к сокету.

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

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

  1. Указан терминал, которого нет

    При StandardInput=tty systemd открывает TTYPath= (по умолчанию /dev/console). В контейнере или на машине без консоли открыть его нельзя.

  2. Файл из StandardInput=file: отсутствует или недоступен

    Файл открывается на чтение под пользователем службы. Нет файла или нет прав — отказ на шаге STDIN.

  3. Ввод привязан к сокету, которого нет

    При StandardInput=socket служба должна запускаться сокет-активацией с Accept=yes. При ручном запуске сокета нет, и настроить ввод не из чего.

Диагностика

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

Показывает отказ на шаге STDIN и его причину.

journalctl -xeu myapp.service --no-pager -n 20

Все настройки ввода вместе: сразу видно, откуда взялось нестандартное значение.

systemctl show myapp.service -p StandardInput -p TTYPath -p Sockets

Решение

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

1. Указан терминал, которого нет
Почему происходит
При StandardInput=tty systemd открывает TTYPath= (по умолчанию /dev/console). В контейнере или на машине без консоли открыть его нельзя.
Как проверить
Посмотрите значения и наличие устройства.
systemctl show myapp.service -p StandardInput -p TTYPath
ls -l /dev/console
Как исправить
Для служб, которым ввод не нужен, поставьте StandardInput=null. Если программа действительно требует терминал, запускайте её не как службу, а через systemd-run с терминалом.
2. Файл из StandardInput=file: отсутствует или недоступен
Почему происходит
Файл открывается на чтение под пользователем службы. Нет файла или нет прав — отказ на шаге STDIN.
Как проверить
Проверьте путь и доступ от пользователя службы.
systemctl show myapp.service -p StandardInput
sudo -u app head -c1 /var/lib/myapp/input.txt
Как исправить
Создайте файл и дайте права на чтение либо передавайте данные иначе: через StandardInputText= для короткого текста или через аргумент с путём.
3. Ввод привязан к сокету, которого нет
Почему происходит
При StandardInput=socket служба должна запускаться сокет-активацией с Accept=yes. При ручном запуске сокета нет, и настроить ввод не из чего.
Как проверить
Проверьте, есть ли связанный сокет-unit и активен ли он.
systemctl show myapp.service -p StandardInput -p Sockets
systemctl status myapp.socket
Как исправить
Запускайте службу через сокет (systemctl start myapp.socket) либо уберите привязку ввода к сокету.

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

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

× myapp.service - My application
     Active: failed (Result: exit-code) since Mon 2026-09-14 18:02:33 MSK; 1s ago
    Process: 13400 ExecStart=/usr/local/bin/myapp (code=exited, status=208/STDIN)

systemd[13400]: myapp.service: Failed at step STDIN spawning /usr/local/bin/myapp: No such device or address

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

Источники

  • systemd.exec(5)
    208 EXIT_STDIN: не удалось настроить стандартный ввод, см. StandardInput=.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено с StandardInput=tty в контейнере без /dev/console.
    собственная проверка, systemd 255
    сверено 15 сентября 2026