在使用 systemd 之前,我的 /etc/init.d/referee 脚本可以毫无问题地启动/停止/重新启动服务。转换为 systemd 后,它会调用相同的 init.d 脚本,服务会毫无错误地启动,然后不知何故又迅速被调用并停止。
当我手动运行该服务时,该服务可以启动并继续运行,没有任何问题。手动启动时,“systemctl 状态裁判”显示服务为活跃(运行)
我已经将 Type=forking 设置为了。我还需要其他设置吗?
我的系统:
Distributor ID: CentOS
Description: CentOS Linux release 7.1.1503 (Core)
Release: 7.1.1503
Codename: Core
/etc/systemd/system referee.service 文件:
[Unit]
Description=keeper service
After=rc-local.service
After=syslog.target
[Service]
ExecStart=/usr/local/keeper/initscripts/referee start
ExecReload=/usr/local/keeper/initscripts/referee restart
ExecStop=/usr/local/keeper/initscripts/referee stop
Type=forking
# restart automagically after a reboot
Restart=always
RestartSec=10
[Install]
WantedBy=basic.target
答案1
看来 Type=forking 导致了重启。更好的方法是删除 Type 并改用 PIDFile=。