web-dev-qa-db-ja.com

新しいsystemdサービスを作成するときに、オプションRemainAfterExitをtrueに設定する必要があるのはいつですか?

いくつかのサービスを書こうとしています。それらのいくつかは、「タイプ」オプションがワンショットに設定されています。しかし、オプション 'RemainAfterExit'をtrueに設定する必要があるとき、私はまだ混乱しています。 (終了した後でも、そのサービスだけがアクティブである必要はありません)。

16
Aditya Vardhan

使用する RemainAfterExit=yesサービス用。システムの状態を何らかの形で変更します。その状態を元に戻すには、サービスを停止するだけです。その後、再度開始できますが、最初に停止する必要があります。例としては、ファイルシステムに他のアプリケーションで使用されるフラグを作成するサービスがあります。起動時にフラグファイルが作成されてから存在しますが、systemdによってサービスはアクティブなままです。次に、それを停止すると、フラグファイルが削除されます。

使用する RemainAfterExit=noは、何らかのアクションを実行しますが、システムの状態は変更しません。例は、クリーンアップするサービスです/tmp。あなたはそれを開始します、それはその仕事をし、それから非アクティブになります(それを止める必要はありません)。そして、いつでもそれを再び開始することができ、その作業(クリーンアップ)を再開します。

21
Marki555

Systemdから ページ 以下はRemainAfterExitの説明です

RemainAfterExit =すべてのプロセスが終了した場合でもサービスがアクティブであると見なされるかどうかを指定するブール値を取ります。デフォルトはnoです。

これは単に、サービスの終了から開始されたすべてのプロセスがサービスのステータスを照会したときに、このフラグがtrueに設定されている場合、サービスがアクティブであることを意味します。 falseに設定すると、サービスステータスは非アクティブになります。

これは、起動時にサービスへの依存関係を追加するときに特に役立ちます。ここで、サービスの状態は依存サービスを開始するために重要です。

3
DarkKnight

このフラグは、独自の簿記や会計に役立ちます。終了後にサービスをアクティブにすると便利な場合は、フラグを設定できます。

0
Mark Stosberg