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

我有一个systemd服务,使用以下configuration(在/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运行的,我不能立即看到直接与程序交互的方式。 有什么方法可以“连接”程序提供的stream,而在systemd中作为服务运行?

man systemd.exec ,你会发现你可以设置StandardInput=tty ,然后设置TTYPath=来设置一个特别的TTY来连接。

尽pipe使用systemd来运行CLI应用程序是非常规的。

一些服务似乎可以通过systemd运行并提供一个CLI,但是他们实际上使用的是客户端/服务器模式。 例如,数据库服务器通常通过systemd运行,但是在运行时通过CLI连接到它们。

客户端/服务器交互如何工作对每个服务器都是特定的。 通常他们通过本地端口或套接字进行通信。

您应该首先确认您运行的服务是否devise为直接连接到TTY,或者是否实际监听基于CLI的客户端连接到的本地端口或套接字。