Plainnotes

After、Wants、Requires 到底有什么区别

2026-03-25 · 3 分钟系统

After=network.target 只表示“如果它也要启动,排在后面”,不代表“没有它我就不启动”。这是最常见的误解。

三组关系:

  • After= / Before=:纯顺序,不影响启动与否。
  • Wants=:弱依赖,对方失败我也继续。
  • Requires=:强依赖,对方失败或停止,我也被停。

实际写服务时,network-online.target 通常要配 Wants=network-online.target 加 After=network-online.target,两个都要。只写 After 的话,网络没起来服务照样启动,然后连不上数据库反复重启。

BindsTo= 更严格,设备或挂载点消失就停。PartOf= 用于“重启 A 时顺带重启 B”的场景。