Systemd
systemd 前後聲明
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.service
和b.service
。我想a.service
完全啟動之前,b.service
因為b.service
依賴於a.service
.閱讀上述手冊頁後,我找不到任何關於是否:
- 您只需要
Before=b.service
在a.service
單元文件中指定- 您只需要
After=a.service
在b.service
單元文件中指定- 您需要在 單元文件和單元文件
After=a.service
中b.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。