我已经在 ubuntu 16.04 上安装了 postgres 9.5,它创建postgresql.service
和[email protected]
.
我知道postgresql.service
生成所有启用的 postgres 实例,我可以使用模板文件调用特定实例,[email protected]
但[email protected]
我看不到实例字符串(由模板中的 %i 或 %I 表示)的任何地方被路过postgresql.service
。
如何postgresql.service
知道启用了哪些实例,以及如何将它们传递给 systemd 模板文件?
要回答这个问题,首先要检查有问题的两个文件的内容。如果您不确定在哪里可以找到它们,您可以在包内容中搜索
systemd
文件:通过查看
postgresql.service
文件,您可以看到您根本没有做太多事情:从评论中,我们了解到该文件被用作 systemd “目标”。转到模板文件:
有趣的指令是:
如果您不确定在哪里可以找到
systemd
指令的文档,您可以检查:man systemd.directives
. 从那里,我们在man systemd.unit
.当您启用服务时,您最大的线索是:
把它们放在一起:
systemd
知道在服务器启动时启动 PostgreSQL 9.6。PartOf=
和ReloadPropagatedFrom=
指令确保服务上的、 和最终stop
应用于start
所有相关的已安装 PostgreSQL 实例。restart
reload
postgresql
至少在较新版本的 postgres 中有一个 systemd 生成器脚本
它将启动所有在它们的值为“auto”的 postgresql 实例
配置。所以不需要通过符号链接
systemctl enable
或类似的东西手动启用这些。只需更改启动模式start.conf
并执行systemctl daemon-reload
.