系统服务的停止如何触发不同的服务停止?

时间:2017-04-03 09:13:03

标签: ubuntu-16.04 systemd startupscript

我正在创建一个systemd服务,让我们在Ubuntu 16.04上调用它,我想在每次启动后在一个名为A的特定服务之后启动,然后运行一个特定的脚本。到目前为止,我已经创建了服务单元文件,其中包含以下字段:

[Unit]
Description=B
After=A.service

[Service]
ExecStart=/opt/B.sh

[Install]
WantedBy=multi-user.target

此外,我希望停止服务A以触发服务B的停止。使用服务单元文件中的以下命令执行此操作

ExecStop=systemctl stop A.service

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 创建/etc/systemd/system/A.d/stop-b.conf
  2. 将其添加到其中:
  3. [Service] ExecStopPost=systemctl stop B.service

    如果你想在A停止时停止B,那就是这样。您在使用中看到的第二个功能是ExecStopPost=指令,用于在服务停止时运行其他命令。