![使用 systemd 和旧式 init.d 服务的服务顺序](https://linux22.com/image/677539/%E4%BD%BF%E7%94%A8%20systemd%20%E5%92%8C%E6%97%A7%E5%BC%8F%20init.d%20%E6%9C%8D%E5%8A%A1%E7%9A%84%E6%9C%8D%E5%8A%A1%E9%A1%BA%E5%BA%8F.png)
在我的 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
确保数据库已启动,但如果两个服务都启用,并且可以从依赖关系的任一端控制排序,则仅排序就足够了。