У меня настроена служба 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 или для прослушивания локального порта или сокета, к которому подключается клиент на основе интерфейса командной строки.