在需求启动时启动 systemd 服务

在需求启动时启动 systemd 服务

我有一个通过 依赖于 mysql.service 的服务Requires=。这是必要的,因为如果 mysql 不可用,服务就会崩溃。

执行systemctl restart mysql工作正常。它首先停止我的服务,重新启动 mysql,然后再次启动我的服务。

我该如何配置我的设备,以便我运行时它也能再次启动systemctl stop mysql && systemctl start mysql

这在 debian 的 mysql 无人值守升级期间尤其是一个问题,因为更新过程使用的是stop/start而不是restart

答案1


新的和更好的答案

显然我昨天没有仔细阅读。看来您的问题可以通过在部分下添加mysql.service服务轻松解决。WantedBy[Install]

然后在您重新启用服务后,mysql.service只要您的服务已启用,它就应该在启动时启动

结果如下:

[Unit]
Requires=mysql.service
After=mysql.service

[Install]
WantedBy=multi-user.target mysql.service

我的旧答案供参考:

我不知道是否可以配置您的设备以按照您希望的方式运行。

不过,在您的情况下,我已经通过安装 systemd 插件文件来修改外部单元,解决了类似的问题mysql.service

假设您的单位是,foo.service您可以创建一个包含以下内容的.conf文件:
/etc/systemd/system/mysql.service.d/

[Unit]
Wants=foo.service
Before=foo.service

foo.service这将导致 systemd在每次启动后尝试启动mysql.service

为了完整起见,并引用 systemd文档

除了 /etc/systemd/system,系统服务的嵌入式“.conf”文件可以放在 /usr/lib/systemd/system 或 /run/systemd/system 目录中。/etc 中的嵌入式文件优先于 /run 中的文件,而 /run 中的文件又优先于 /usr/lib 中的文件。这些目录中的嵌入式文件优先于位于任何地方的单元文件。(当然,由于 /run 是临时文件,而 /usr/lib 是用于供应商的,因此不太可能在这两个地方使用嵌入式文件。)

相关内容