web-dev-qa-db-ja.com

シャットダウン時のSIGTERMとSIGKILLの間の遅延はどのくらいですか?

Unixライクなシステムが正常にシャットダウンされたとき。 haltshutdownpoweroffなど、または同等のGUIを使用して、SIGTERMシグナルを送信することにより、最初にすべてのプロセスを正常に終了しようとします。しばらくすると、まだ実行中のプログラムにSIGKILLが送信されます。

その遅延はどのくらいですか?プログラムが正常に終了するには、どれくらいの時間がかかりますか?これがシステム間で異なる場合、Ubuntuサーバーの特定のデフォルト設定を知りたいです。

編集:説明されているようにそれはSystemdの90秒の遅延ですか here

3

Systemdサービスは、起動とシャットダウンに独自のタイムアウト値を指定できます。指定されていない場合、値はsystemd設定ファイルから設定されます。構成ファイルで設定されているデフォルト値は、起動とシャットダウンの両方で90秒です。

systemd.serviceの手動ページ から:

TimeoutStopSec=

このオプションには2つの目的があります。最初に、各ExecStop=コマンドを待機する時間を構成します。それらのいずれかがタイムアウトした場合、後続のExecStop=コマンドはスキップされ、サービスはSIGTERMによって終了されます。 ExecStop=コマンドが指定されていない場合、サービスはSIGTERMをすぐに取得します。 2番目に、サービス自体が停止するまで待機する時間を構成します。指定した時間内に終了しない場合は、SIGKILLによって強制終了されます(systemd.kill(5)のKillMode=を参照)。秒単位の単位のない値、または「5min 20s」などのタイムスパン値を取ります。タイムアウトロジックを無効にするには、"infinity"を渡します。 デフォルトは、マネージャー構成ファイルからDefaultTimeoutStopSec=に設定されます(systemd-system.conf(5)を参照)。

そして systemd-system.confのマニュアルページ から:

DefaultTimeoutStartSec=DefaultTimeoutStopSec=DefaultRestartSec=

ユニットの開始と停止のデフォルトのタイムアウトを構成します、およびTimeoutStartSec=でユニットごとに構成されているように、ユニットの自動再起動の間にスリープするデフォルトの時間、TimeoutStopSec=およびRestartSec=(サービスについては、ユニットごとの設定の詳細についてはsystemd.service(5)を参照してください)。 Type=oneshotのサービスが使用されている場合、デフォルトでは無効になっています。非サービスユニットの場合、DefaultTimeoutStartSec=はデフォルトのTimeoutSec=値を設定します。 DefaultTimeoutStartSec=およびDefaultTimeoutStopSec=のデフォルトは90秒です。DefaultRestartSec=のデフォルトは100ミリ秒です。

3
Haxiel