我试图创建一个在 ServiceA 启动后启动的 ServiceB 。
这就是我试图做的:
服务A文件:
[Unit]
Description=ServiceA
After=network.target
[Service]
ExecStartPre=running some shell script....
ExecStart=running some shell script....
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
TimeoutStopSec=10
[Install]
WantedBy=multi-user.target
第一个 ServiceB 文件尝试:
[Unit]
Description=ServiceB
After=ServiceA.service
Requires=ServiceA.service
[Service]
ExecStart=running some shell script....
[Install]
WantedBy=multi-user.target
第二个 ServiceB 文件尝试:
[Unit]
Description=ServiceB
After=ServiceA.service
Requires=ServiceA.service
[Service]
ExecStart=running some shell script....
[Install]
WantedBy=ServiceA.service
第一次尝试有效,但仅在启动时有效,但是当我使用 systemctl stop ServiceA 停止服务时 systemctl stop ServiceA
然后尝试再次启动ServiceA systemctl start ServiceA
我认为 ServiceB 也应该启动(它仍然启用)
可能是什么问题?
** 我不想在 ServiceA 文件中使用 Wants=,我希望 ServiceB 能够管理它。
您忘记告诉编辑后
systemd
重新安装新的。文件没有任何问题,一旦服务安装正确,systemctl 启动和停止就可以正常工作。通过以下命令告诉 systemd 使用新代码:.wants
ServiceB.service
.service
systemd 不会在启动时自动重新启用服务,并且让您出于某种原因单独执行此操作。您希望能够禁用服务,这可以通过从
.wants
. 如果它自动重新创建依赖项,您将无法禁用导致问题的服务。