我有一个服务取决于mysql.service通过Requires= 。 这是必要的,因为服务崩溃,如果mysql不可用。
执行systemctl restart mysql工作正常。 它首先停止我的服务,重新启动MySQL,并再次启动我的服务。
我怎样才能configuration我的单元,那又启动了,如果我运行systemctl stop mysql && systemctl start mysql ?
这在debian的无人值守升级的mysql期间尤其是一个问题,因为更新过程使用stop / start而不是restart 。
很显然,我昨天没有读得很好。 看来你的问题可以很容易地通过添加mysql.service到你的服务WantedBy在[Install]部分下解决。
那么在重新启用服务之后,只要启用了服务,就应该在启动mysql.service启动它
结果如下所示:
[Unit] Requires=mysql.service After=mysql.service [Install] WantedBy=multi-user.target mysql.service
我不知道是否可以configuration你的单位行为你想要的方式。
但是,我已经通过安装systemd的插件文件来修改外部单元来解决类似的问题,在你的情况下mysql.service 。
假设你的单位是foo.service你可以在.conf中创build一个.conf文件
/etc/systemd/system/mysql.service.d/ ,内容如下:
[Unit] Wants=foo.service Before=foo.service
这会导致systemd在每次启动mysql.service之后尝试启动foo.service
为了完整起见,并引用systemd 文档 :
除了/ etc / systemd / system之外,系统服务的插件“.conf”文件可以放在/ usr / lib / systemd / system或/ run / systemd / system目录中。 / etc中的插入文件优先于/ in中的文件,优先于/ usr / lib中的文件。 这些目录下的文件夹优先于位于任何位置的单元文件。 (当然,因为/ run是临时的,而/ usr / lib是供应商的,所以在这些地方都不应该使用drop-in。)