Command-Line-Interface
與作為 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 中將其作為服務執行?
在
man systemd.exec
中,您會發現可以設置StandardInput=
為 的值tty
,然後設置TTYPath=
為設置要連接的特定 TTY。
systemd
不過,使用它來執行 CLI 應用程序是相當不同尋常的。某些服務可能看起來通過 CLI 執行
systemd
並提供 CLI,但它們實際上使用的是客戶端/伺服器模型。例如,數據庫伺服器通常通過 執行systemd
,但在它們執行時您通過 CLI 連接到它們。客戶端/伺服器互動的工作方式是特定於每個伺服器的。通常它們通過本地埠或套接字進行通信。
您應該首先確認您執行的服務是否旨在直接連接到 TTY,或者它是否實際偵聽基於 CLI 的客戶端連接到的本地埠或套接字。