与作为 systemd 服务的一部分运行的程序交互

与作为 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 内的服务运行?

答案1

在 中man systemd.exec,您会发现您可以将 设置StandardInput=为 的值tty,然后设置TTYPath=为设置要连接的特定 TTY。

systemd但用它来运行 CLI 应用程序却相当不寻常。

某些服务可能出现通过 运行systemd并提供 CLI,但它们实际上使用的是客户端/服务器模型。例如,数据库服务器通常通过 运行systemd,但当它们运行时,您可以通过 CLI 连接到它们。

客户端/服务器交互的工作方式因服务器而异。通常它们通过本地端口或套接字进行通信。

您应该首先确认服务您运行的程序旨在直接连接到 TTY,或者它实际上正在监听基于 CLI 的客户端连接到的本地端口或套接字。

相关内容