サービスでsystemd stopコマンドを同期する方法は?

サービスでsystemd stopコマンドを同期する方法は?

a.service修正できないものと修正できるものがあるとしましょうb.service。次の停止コマンドを見たいです。

Stopping b.service ...
Stopped b.service
Stopping a.service ...
Stopped a.service

代わりに:

Stopping b.service ...
Stopping a.service ...
Stopped b.service
Stopped a.service

b.serviceこれを完了するのに少なくとも20秒かかるとしましょう。

ベストアンサー1

b.service早めに停止したい場合は、a.service実際に注文する必要がありますb.service 後ろに a.serviceこれは、サービスが停止する順序が開始される順序と反対であるためです。

したがって、これは説明する内容を達成するのに十分でなければなりません。

#b.サービス単位ファイル
[単位]
説明=...
以降=a.service

[提供する]
...

よりAfter=出荷書類ビーチman systemd.unit、これは次のとおりです。

順次依存関係を持つ2つのデバイスがシャットダウンすると、開始順序は逆になります。つまり、あるデバイスが別のデバイスの上に設定されている場合、両方のデバイスが終了するAfter=と、前者は後者の前に停止します。

b.serviceまた、終了するのに少なくとも20秒かかるとどうなるか尋ねました。大丈夫です。正しく設定されている場合、b.servicesystemdはデバイスが完了を停止するまで(つまり、何らかのExecStop=方法で誤って設定されていない場合)、タイムアウトに達する前に停止するまでこれを監視できます。TimeoutStopSec=b.service)、systemdは終了を初期化する前に完全に停止するのを待ちますa.service

おすすめ記事