使用 systemd 和旧式 init.d 服务的服务顺序

使用 systemd 和旧式 init.d 服务的服务顺序

在我的 Fedora 23 系统上,数据库由 systemd 启动。另一个依赖于该数据库的服务 (hive-metastore) 通过 init.d 脚本启动。我不清楚如何才能让这些服务以正确的顺序启动(数据库在 hive-megastore 之前)。

答案1

最好的解决方案很可能就是为 hive-metastore 服务编写一个 systemd 单元 - 只要它具有相同的名称,systemd 就会优先使用它而不是 init 脚本,而且它可能更容易阅读,更可靠。

不过,您可以通过添加Before=hive-metastore.service数据库服务单元来控制排序。最好使用 dropin 片段来完成,因此请创建类似/etc/systemd/system/database-name.service.d/hive-metastore.conf以下内容的内容:

[Unit]
Before=hive-metastore.service

如果两者都是本机 systemd 单元,那么您会做些不太一样的事情,因为在这种情况下,您可能会将配置添加到另一项服务,并使用两者After来控制排序并Requires确保数据库已启动,但如果两个服务都启用,并且可以从依赖关系的任一端控制排序,则仅排序就足够了。

相关内容