改めて man を読んでもよくわからなかったので表に整理したメモ。
ユニット A のファイルで Requires B のように指定したときの動作。
| 操作 | Requires | Wants | BindsTo | PartOf |
|---|---|---|---|---|
| start A | start B | start B | start B | - |
| stop A | - | - | - | - |
| restart A | - | - | - | - |
| exit A | - | - | - | - |
| failed A | - | - | - | - |
| start B | - | - | - | - |
| stop B | stop A | - | stop A | stop A |
| restart B | restart A | - | restart A | restart A |
| exit B | - | - | stop A | - |
| failed B | - | - | stop A | - |
操作 の内容はそれぞれ次の通り。
- start
systemctl startで開始
- stop
systemctl stopで停止
- restart
systemctl restartでリスタート
- exit
- サービスが正常開始後に終了コード
0で停止
- サービスが正常開始後に終了コード
- failed
- サービスが正常開始後に終了コード
1で停止
- サービスが正常開始後に終了コード
あと、ユニット A で After B を指定してて start A により開始した B が failed になったとき、Requires や BindsTo の場合は A の開始がブロックされる。これは Requires や Wants の違いとしてよく知られているものだけど↑の表にどう書くと良いか思いつかなかったので書いてません。