systemd 在 [unit] 选项之后不起作用

systemd 在 [unit] 选项之后不起作用

我有以下myweb.service文件

[Unit]
Description=myweb - A simple hello world program
After=bluetooth.service

[Service]
Type=simple
User=root
ExecStart=/usr/bin/docker run -p 2222:4343 manikanth/webapp
Restart=on-failure

[Install]
#WantedBy=multi-user.target

我特意禁用bluetooth.service并检查了。但该服务仍然处于活动状态。我认为这可能是由于WantedBy,因此我发表了评论。问题仍然存在

什么是正确的方法不培养如果依赖服务例如bluetooth.service未激活,则该服务?

答案1

您可能正在寻找该Requisite=选项和该After=选项。

来自手册页

类似于 Requires=。但是,如果此处列出的单元尚未启动,则它们将不会启动,并且事务将立即失败。

Requires=在这种情况下不起作用是因为它将bluetooth.service在您启动时启动myweb.serviceRequisite=选项不会尝试启动bluetooth.service.但是,它会显示myweb.service失败。

答案2

myweb.service如果我没记错的话,您只会在启动时才激活,bluetooth.service否则不会触发myweb.serbice。如果这是正确的,请阅读下面的答案,否则请纠正我!

您确实应该Requires与 一起使用After。使用After仅配置单元文件之间的排序依赖关系,但Requires将确保如果依赖单元失败,那么也会失败。所以,Requires=bluetooth.service添加myweb.servicesystemctl daemon-reload

相关内容