我已经使用以下配置(在 中)设置了 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 应用程序是相当不同寻常的。某些服务可能看起来通过 CLI 运行
systemd
并提供 CLI,但它们实际上使用的是客户端/服务器模型。例如,数据库服务器通常通过 运行systemd
,但在它们运行时您通过 CLI 连接到它们。客户端/服务器交互的工作方式是特定于每个服务器的。通常它们通过本地端口或套接字进行通信。
您应该首先确认您运行的服务是否旨在直接连接到 TTY,或者它是否实际侦听基于 CLI 的客户端连接到的本地端口或套接字。