启动服务之前等待挂载

use*_*408 3 startup mount systemd

我有一个带有外部硬盘的 Raspbian 9 系统,它在启动期间安装/srv/file。我正在运行 PostgreSQL 和 BIND,两者都有驻留在该磁盘上的数据文件。

启动时,PostgreSQL 通常无法启动,因为外部磁盘文件系统尚未安装。BIND 启动,但出于同样的原因,文件系统上存储的任何内容的名称解析都会失败。

systemctl list-units | grep mount告诉我文件系统的 systemd 单位是srv-file.mount. 然后我去添加了

Requires=srv-file.mount
Run Code Online (Sandbox Code Playgroud)

到和[Unit]部分(都没有任何其他启动要求),但仍然无济于事。bind9.servicepostgresql.service

我缺少什么?

use*_*408 7

根据文档,有一个专门用于安装的选项:

\n
RequiresMountsFor=/srv/file/named\n
Run Code Online (Sandbox Code Playgroud)\n

确保在本装置启动之前访问所需的所有安装/srv/file/named都已就位。

\n

这对 BIND 有效。

\n

然而,对于 PostgreSQL,似乎还有一些其他错误。该服务似乎已关闭(Webmin 告诉我确实如此,并且使用它的应用程序也无法工作),但systemctl status postgresql告诉我它\xe2\x80\x99s 已启动:

\n
\xe2\x97\x8f postgresql.service - PostgreSQL RDBMS\n   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)\n   Active: active (exited) since Sun 2021-06-13 18:48:18 CEST; 4min 57s ago\n  Process: 543 ExecStart=/bin/true (code=exited, status=0/SUCCESS)\n Main PID: 543 (code=exited, status=0/SUCCESS)\n    Tasks: 0 (limit: 4915)\n   CGroup: /system.slice/postgresql.service\n
Run Code Online (Sandbox Code Playgroud)\n

查看单元文件告诉我它除了运行之外什么也不做true。这似乎是一个与我想象的不同的问题;显然我编辑了错误的文件。

\n