Systemd

systemd 前後聲明

  • January 25, 2018

man 中對 systemd 單元的定義有點不清楚:https ://www.freedesktop.org/software/systemd/man/systemd.unit.html

如果一個單元foo.service包含一個設置Before=bar.service並且兩個單元都正在啟動,則bar.service啟動將延遲到 foo.service啟動。

$$ … $$ After=是 的倒數Before=,即同時After=確保配置的單元在列出的單元完成啟動後啟動, Before=相反,確保配置的單元在列出的單元啟動之前完全啟動。

可以說我有a.serviceb.service。我想a.service完全啟動之前,b.service因為b.service依賴於a.service.

閱讀上述手冊頁後,我找不到任何關於是否:

  • 需要Before=b.servicea.service單元文件中指定
  • 需要After=a.serviceb.service單元文件中指定
  • 您需要 單元文件單元文件After=a.serviceb.service Before=b.service``a.service

我需要為 systemd 單元文件聲明哪些依賴項?有關係嗎?

您只需要其中一個After=Before=一對單元。您可能更喜歡手冊頁中的以下內容systemctl

–after … 任何 After= 依賴項都會自動鏡像以創建 Before= 依賴項。

使用這個選項list-dependencies來檢查你認為 systemd 應該做什麼。例如

$ systemctl list-dependencies --after timers.target
timers.target
* |-sysstat-collect.timer
* |-sysstat-summary.timer
* |-systemd-tmpfiles-clean.timer
* `-unbound-anchor.timer

$ systemctl list-dependencies --before sysstat-collect.timer
sysstat-collect.timer
* |-sysstat-collect.service
* |-shutdown.target
* `-timers.target

如果您正在從這裡轉換,您可能會從這裡upstart得到一些提示,並且您可以閱讀這裡列出的所有部落格,標題為管理員部落格系列的 systemd

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