Command-Line-Interface

與作為 systemd 服務的一部分執行的程序互動

  • March 18, 2017

我已經使用以下配置(在 中)設置了 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 的客戶端連接到的本地埠或套接字。

引用自:https://serverfault.com/questions/839101