我已经设置了一个 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 的客户端连接到的本地端口或套接字。