SystemdDoctor
Accept= [Socket]

Accept= в сокет-unit: экземпляр на соединение

Определяет, кто принимает соединение. При Accept=no служба получает слушающий сокет и обслуживает подключения сама. При Accept=yes systemd принимает каждое соединение и запускает для него отдельный экземпляр шаблонной службы.

Что делает

Режим «по соединению» удобен для простых обработчиков: программа читает данные со стандартного ввода и пишет ответ в вывод, ничего не зная о сети. Так работали службы через inetd, и systemd умеет то же самое.

Для обычных сетевых служб нужен Accept=no: веб-сервер или база сами управляют множеством соединений, и запуск экземпляра на каждое подключение был бы разорительным.

Где ставится. В секции [Socket]. При значении «yes» служба должна быть шаблонной, с символом @ в имени.

Значения

ЗначениеЧто происходит
noпо умолчанию: служба получает слушающий сокет.
yesэкземпляр службы на каждое соединение.

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

Пример

Простой обработчик, запускаемый на каждое подключение.

# echo.socket
[Socket]
ListenStream=7777
Accept=yes

# echo@.service
[Service]
ExecStart=/usr/local/bin/echo-handler
StandardInput=socket

Имя службы обязано быть шаблонным: systemd подставит в экземпляр номер соединения.

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

При Accept=yes служба обязана быть шаблонной: обычная не запустится.

Для нагруженных служб режим «по соединению» неприменим: на каждое подключение создаётся процесс.

Ограничить наплыв можно параметрами MaxConnections= и MaxConnectionsPerSource=.

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

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

Источники

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