Unixライクなシステムが正常にシャットダウンされたとき。 halt
、shutdown
、poweroff
など、または同等のGUIを使用して、SIGTERMシグナルを送信することにより、最初にすべてのプロセスを正常に終了しようとします。しばらくすると、まだ実行中のプログラムにSIGKILLが送信されます。
その遅延はどのくらいですか?プログラムが正常に終了するには、どれくらいの時間がかかりますか?これがシステム間で異なる場合、Ubuntuサーバーの特定のデフォルト設定を知りたいです。
編集:説明されているようにそれはSystemdの90秒の遅延ですか here ?
Systemdサービスは、起動とシャットダウンに独自のタイムアウト値を指定できます。指定されていない場合、値はsystemd設定ファイルから設定されます。構成ファイルで設定されているデフォルト値は、起動とシャットダウンの両方で90秒です。
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ミリ秒です。