Назад | Перейти на главную страницу

Взаимодействие с программой, работающей как часть службы systemd

У меня настроена служба systemd со следующей конфигурацией (в /etc/systemd/system/my-service.service):

[Unit]
Description=My service

[Service]
WorkingDirectory=/path/to/my/service
User=some-user
Group=some-group
Restart=on-failure
RestartSec=20 5
ExecStart=my-service-binary

[Install]
WantedBy=multi-user.target

Когда программа запускается, она предоставляет интерфейс командной строки для взаимодействия. Однако, поскольку эта программа запускается systemd, я не могу сразу увидеть способ напрямую взаимодействовать с программой. Есть ли способ «подключиться» к потоку, который предоставляет программа, при запуске его как службы в systemd?

В man systemd.exec, вы обнаружите, что можете установить StandardInput= к стоимости tty, а затем установите TTYPath= чтобы установить конкретный TTY для подключения.

Довольно нетрадиционно использовать systemd для запуска приложений CLI.

Некоторые службы могут появиться бежать через systemd и предлагают CLI, но они действительно используют модель клиент / сервер. Например, серверы баз данных обычно запускаются через systemd, но вы подключаетесь к ним через интерфейс командной строки, когда они работают.

Как работает взаимодействие клиент / сервер, зависит от каждого сервера. Обычно они общаются через локальный порт или сокет.

Сначала вы должны подтвердить, что служба запущенный вами предназначен для прямого подключения к TTY или для прослушивания локального порта или сокета, к которому подключается клиент на основе интерфейса командной строки.