After、Wants、Requires 到底有什么区别
After=network.target 只表示“如果它也要启动,排在后面”,不代表“没有它我就不启动”。这是最常见的误解。
三组关系:
After=/Before=:纯顺序,不影响启动与否。Wants=:弱依赖,对方失败我也继续。Requires=:强依赖,对方失败或停止,我也被停。
实际写服务时,network-online.target 通常要配 Wants=network-online.target 加 After=network-online.target,两个都要。只写 After 的话,网络没起来服务照样启动,然后连不上数据库反复重启。
BindsTo= 更严格,设备或挂载点消失就停。PartOf= 用于“重启 A 时顺带重启 B”的场景。