我有一个通过 依赖于 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 是用于供应商的,因此不太可能在这两个地方使用嵌入式文件。)