いくつかのサービスを書こうとしています。それらのいくつかは、「タイプ」オプションがワンショットに設定されています。しかし、オプション 'RemainAfterExit'をtrueに設定する必要があるとき、私はまだ混乱しています。 (終了した後でも、そのサービスだけがアクティブである必要はありません)。
使用する RemainAfterExit=yes
サービス用。システムの状態を何らかの形で変更します。その状態を元に戻すには、サービスを停止するだけです。その後、再度開始できますが、最初に停止する必要があります。例としては、ファイルシステムに他のアプリケーションで使用されるフラグを作成するサービスがあります。起動時にフラグファイルが作成されてから存在しますが、systemdによってサービスはアクティブなままです。次に、それを停止すると、フラグファイルが削除されます。
使用する RemainAfterExit=no
は、何らかのアクションを実行しますが、システムの状態は変更しません。例は、クリーンアップするサービスです/tmp
。あなたはそれを開始します、それはその仕事をし、それから非アクティブになります(それを止める必要はありません)。そして、いつでもそれを再び開始することができ、その作業(クリーンアップ)を再開します。
Systemdから ページ 以下はRemainAfterExitの説明です
RemainAfterExit =すべてのプロセスが終了した場合でもサービスがアクティブであると見なされるかどうかを指定するブール値を取ります。デフォルトはnoです。
これは単に、サービスの終了から開始されたすべてのプロセスがサービスのステータスを照会したときに、このフラグがtrueに設定されている場合、サービスがアクティブであることを意味します。 falseに設定すると、サービスステータスは非アクティブになります。
これは、起動時にサービスへの依存関係を追加するときに特に役立ちます。ここで、サービスの状態は依存サービスを開始するために重要です。
このフラグは、独自の簿記や会計に役立ちます。終了後にサービスをアクティブにすると便利な場合は、フラグを設定できます。