覆盖 systemd 服务时如何订购 ExecStop= 执行?

覆盖 systemd 服务时如何订购 ExecStop= 执行?

我正在尝试向 systemd 服务添加功能([电子邮件受保护])使用覆盖文件。我遇到的麻烦是我需要新功能始终在旧功能“内部”运行,即在执行开始=和之前执行停止=原始服务的(因为它在旧功能创建的目录上安装文件系统,然后在删除该目录之前卸载它)。

前者很简单,因为我可以使用执行开始后=以确保正确的订购。但没有一个执行停止前=,如果我只是使用执行停止=,无法保证顺序,并且在实践中结果是错误的。

有没有解决方法?

答案1

有没有解决方法?

如果您需要明确排序,您可以代替ExecStop覆盖中的现有功能。例如,如果原始单元文件具有:

ExecStop=/path/to/script1

在您的直接覆盖中,您可以:

ExecStop=
ExecStop=/path/to/my_additional_script
ExecStop=/path/to/script1

清空ExecStop=会清除所有现有条目。

或者,不使用ExecStop,也可以使用适当的依赖项(///etc)将逻辑实现为单独的Requires单元。BeforeAfter

相关内容