我有一个守护进程运行一段预先配置的时间然后退出。之后用户可以根据需要重新启动它。systemd 似乎无法处理这种类型的服务。下面是我试过的服务文件。
[Unit]
# DaemonXXX quits
Description=DaemonXXX
After=network.target
[Service]
Type=forking
PIDFile=/var/run/daemonXXX.pid
ExecStart=/usr/local/sbin/daemonXXX
StandardOutput=journal
[Install]
WantedBy=multi-user.target
我可以使用上述单元文件启动服务。守护进程退出后,我也可以通过 command 再次启动它systemctrl start DaemonXXX
。但是当服务在超时后退出时,systemd
抱怨系统降级,因为 daemonXXX 退出。如果我将选项添加RemainAfterExit
到[Service]
部分,
[Unit]
# as above
...
[Service]
# as above
...
RemainAfterExit=yes
...
systemd
不会抱怨degrarded
系统,但我不再能够通过命令再次重新启动服务,systemctrl start daemonXXX
因为systemd
假设它daemonXXX
运行正确并且不需要重新启动它。有没有办法解决它?