「OneShot」システムサービスには、デフォルトで起動/終了に関係のないタイムアウトがありますか?
この場合、展開で使用されている現在のデフォルト値をどのように確認できますか?
答え1
いいえ。デフォルトではtype=oneshot
、サービスは認められませんTimeoutStartSec
。
~からシステムサービス(5)
タイムアウト開始秒=
開始を待つ時間を設定します。デーモンサービスが設定された時間内に開始完了信号を送信しない場合、サービスは失敗したとみなされ、再び終了します。単位なしの秒単位値または「5min 20s」などの時間範囲値を使用します。タイムアウトロジックを無効にするには、「無限大」を渡します。管理者設定ファイルでは、デフォルトはDefaultTimeoutStartSec =です。この場合、Type = oneshotを使用しない限り、タイムアウトはデフォルトで無効になります。(systemd-system.conf(5)を参照)
その理由は…
oneshotは単に動作しますが、systemdが後続のユニットを起動する前にプロセスを終了する必要があります。 RemainAfterExit= はこれらのサービスに特に便利です。 Type =およびExecStart =が指定されていない場合、これは暗黙的なデフォルト値です。
...これは、oneshoteコマンドを実行し、プロセスが終了した場合(if)RemainAfterExit
trueの場合、サービスがアクティブとしてマークされることを意味します。何らかの理由でプロセスが終了しない場合、これは問題になる可能性があり、基本的TimeoutStartSec
に従う他のタイプを使用する可能性があります。たとえば、サービスをtype=simple
明示的に設定できます。TimeoutStartSec
type=oneshot