2017-04-03 105 views
0

我正在创建一个systemd服务,我们在Ubuntu 16.04上将它称为B,我希望每次启动后都会启动一个名为A的特定服务,然后运行特定脚本。到目前为止,我已经创建了包括以下字段的服务单位文件:系统服务的停止如何触发不同服务的停止?

[Unit] 
Description=B 
After=A.service 

[Service] 
ExecStart=/opt/B.sh 

[Install] 
WantedBy=multi-user.target 

此外,我想服务A的停工引发服务B的停止是否有效与做以下命令在A服务单元文件中

ExecStop=systemctl stop A.service 

还是有另一种方式?如果可能的话,我不想改变现有的A服务文件单元。

回答

1

您可以结合使用两个systemd功能来解决您的问题。

首先,您可以使用drop-in文件扩展现有的systemd conf文件而不进行修改。这里的模式:

  1. 创建/etc/systemd/system/A.d/stop-b.conf
  2. 一下添加到它:

[Service] ExecStopPost=systemctl stop B.service

,如果你想阻止B时的停止的那会。您看到的第二个功能是ExecStopPost=指令,以便在服务停止时运行附加命令。