Systemd

在啟動服務之前等待掛載

  • June 13, 2021

我有一個帶有外部硬碟的 Raspbian 9 系統,它/srv/file在引導過程中被掛載。我正在執行 PostgreSQL 和 BIND,它們都有駐留在該磁碟上的數據文件。

啟動時,PostgreSQL 經常無法啟動,因為尚未安裝外部磁碟文件系統。BIND 啟動,但出於同樣的原因,文件系統上儲存的任何內容的名稱解析都會失敗。

systemctl list-units | grep mount告訴我文件系統的 systemd 單元是srv-file.mount. 然後我去添加

Requires=srv-file.mount

到and[Unit]部分(都沒有任何其他啟動要求),但仍然無濟於事。bind9.service``postgresql.service

我錯過了什麼?

根據文件,有一個專門用於安裝的選項:

RequiresMountsFor=/srv/file/named

確保在本機啟動之前訪問所需的所有支架均已安裝/srv/file/named到位。

這對 BIND 有效。

然而,對於 PostgreSQL,似乎還有其他一些錯誤。該服務似乎已關閉(Webmin 告訴我它是,並且使用它的應用程序也不起作用),但systemctl status postgresql告訴我它已啟動:

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

查看單元文件告訴我它除了執行之外什麼都不做true。這似乎是一個與我想像的不同的問題;顯然我編輯了錯誤的文件。

引用自:https://unix.stackexchange.com/questions/654112