追加読書

追加読書

長い話を短く

どのように生産する以前のsystem-Vサービスの「編集可能」systemd .serviceファイルはありますか?

最近、サービスは「非アクティブ」状態ではなく「アクティブ(終了)」状態であるため、ホームブルーの「サーバー管理者」が「Ubuntu 16.04.1」サーバーでサービスを開始できないという問題に直面しました。インターネット検索を使用すると、サービスファイルに次の内容を追加できることがわかります。

Restart=always
RestartSec=3

しかし、電話してください「systemctl edit myservice」と入力すると、空のファイルが表示されます。。明らかに、systemdは "/etc/init.d/myservice"ファイルに基づいていくつかのデフォルトの.serviceファイルを生成します。 findを使用して、「/run/systemd/generator.late/myservice.service」の下に生成されたファイルがあることを発見しました。しかし、これには「Before =」や「After =」など、この「実行」に固有の内容がたくさん含まれており、それを基本として使用する必要があるかどうかはわかりません。

私はsystemd .service形式について何も知らず、このサーバーが年中無休で実行される効率的なサーバーであるため、.serviceファイルを最初から作成したくありません(「練習」に使用できるテストサーバーのレプリカはありません)。

答え1

systemd-sysv-generatorvan Smoorenburgスクリプトで生成された単位を使用しており、rcLSBヘッダー情報がある可能性が高いです。 systemd-sysv-generatorすべての場合に適用される単一のアプローチをとり、いくつかの推測で修正します。 van Smoorenburgrcスクリプトは、長期実行デーモンを起動することも、起動しないことも、PIDファイルを使用することも、使用しないこともあります。 systemd-sysv-generatorこれらの可能性に対応するサービスユニットを作成してみてください。

自動生成されたサービスユニットは、RemainAfterExit=trueLSB情報を含むvan Smoorenburgスクリプトから生成されます。rcしたがって、スクリプトを実行するプロセスが終了し、実行中のプロセスがない場合、サービスはまだ「アクティブ」と見なされ、サービスプロセスは終了します。退場したらこれが残る方法。したがって、サービスはこのactive (exited)状態に入ります。

使用を中止し/etc/init.d/myservicesystemd-sysv-generator乱数サービス単位で梱包することに頼ることを中止する必要があります。公式のファーストクラスサービスユニットファイルを設定します。

あなたはあなたに与えられたものから始めることができますsystemctl edit --full myservice。しかし、明らかに設定が正しくありませんRemainAfterExit=true初心者のため

もちろんこれも妥当な理由だいいえ引き続き現状を維持するいいえ自動生成されたサービス単位ファイルを引き続き使用します。

追加読書

答え2

この質問を維持する価値があるかどうかはわかりませんが、私の誤解のためにこの質問は疑問の余地があります。

  • systemctl edit myservice私の間違いは実際に編集されたと思いました。いっぱい .serviceこれはファイル(コマンド名に基づいて事前の知識なしに想定できるように)なので、このコマンドを使用する前にファイルを作成する必要があります。これを説明するここ

  • 基本的systemctl edit myserviceには圧倒的設定がそうなのでデフォルトは空です。

  • 物理ファイルを編集するには、次の手順を実行する必要がありますsystemctl edit --full myservice。私のsystem-Vサービスでこれを行うと、ファイル全体が表示されます。作成済み文書。

関連情報