我有一个守护程序,它运行一段预先配置的时间,然后退出。如果需要,用户可以重新启动它。似乎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
我可以用上面的单位文件开始服务。守护进程退出后,我也可以通过命令systemctrl start DaemonXXX
再次启动它。但是当服务在超时后退出时,systemd
会抱怨系统因为daemonXXX退出而降级。如果我将RemainAfterExit
opton添加到[Service]
部分,
[Unit]
# as above
...
[Service]
# as above
...
RemainAfterExit=yes
...
systemd
不会抱怨degrarded
系统,但我无法再通过systemctrl start daemonXXX
命令再次重启服务,因为systemd
假设daemonXXX
是正确运行,无需重启。有办法解决吗?