我目前正在尝试使用两个 Fifo 套接字创建一个 systemd 服务。这些套接字映射到应用程序的标准输出和标准输入。我当前正在使用以下配置文件。
foo.service
[Unit]
Description=foo Fifo test
After=network.target foo-in.socket foo-out.socket
Requires=foo-in.socket foo-out.socket
[Service]
Sockets=foo-out.socket
Sockets=foo-in.socket
StandardOutput=fd:foo-out.socket
StandardInput=fd:foo-in.socket
StandardError=journal
ExecStart=/path/to/foo/exec
Run Code Online (Sandbox Code Playgroud)
foo-out.socket
[Unit]
Description=foo Task Writes to this
[Socket]
Service=foo.service
ListenFIFO=%t/foo/out
Run Code Online (Sandbox Code Playgroud)
foo-in.socket
[Unit]
Description=foo Task reads commands from this
[Socket]
Service=foo.service
ListenFIFO=/run/user/1000/foo/in
Run Code Online (Sandbox Code Playgroud)
systemctl --user daemon-reload
我可以使用命令和启动服务systemctl --user start foo
。当我尝试停止 foo.service 时,问题就出现了。我收到这条消息:
Warning: Stopping foo.service, but it can still be activated by:
foo-in.socket
foo-out.socket
Run Code Online (Sandbox Code Playgroud)
有没有办法在服务停止时自动停止套接字?