如何让 systemd 在手动服务启动后自动启动服务?

如何让 systemd 在手动服务启动后自动启动服务?

我有一台带有加密文件系统的服务器,必须在重启后手动将其联机。某些服务需要安装加密文件系统才能读取配置/数据文件等。

有没有办法知道systemd每当服务 X 启动时(即使是手动启动),服务 Y 和 X 应该自动启动?

我知道我可以使用“启动我的所有东西”脚本来编写这个脚本,该脚本启动加密文件系统服务(它实际上不是一个服务;只是一个复杂的挂载命令),然后启动我需要的所有其他东西,但我想知道这是否是 systemd 可以自行处理的事情。

答案1

因此,如果我们将您的服务命名为 X,而将另一个应自动启动的服务(文件系统)命名为服务 Y,则以下命令可以完成这项工作:

shell# vim /usr/lib/systemd/serviceX.service

#Inside the unit file of service x add the following in the [unit] section:
[Unit]
Requires=serviceY.service

#For multiple services
[Unit]
Requires=serviceY.services serviceZ.services

# Don't forget to relaod systemd
shell# systemctl daemon-reload

现在,如果您启动服务 x,服务 y(文件系统)应该会自动启动。此外,如果服务 y 出现错误而无法启动,服务 x 也不会启动。旁注:还有其他关键字,如“after”或“wants”,它们没有“Requires”严格。但在您的示例中,“Requires”应该是正确的选择。

相关内容