自動的に再起動される(自動更新後など)、いくつかのサービスがあります。残念ながら、再起動すると表示されません。service <service name> status
非アクティブで、リストに「なし」が表示されているため、これはわかりますps
。デフォルトの実行可能ファイルが終了すると、systemdはサービスを終了すると思います。ログにはエラーの兆候は表示されません。
サービスは、システムサービスの有無にかかわらず、Type=simple
システムサービスとして定義されますPIDfile=
。 systemdはプロセスを「所有」し、したがってPIDを知っているので、最初に書き込み可能なフォルダを作成する必要がないので、この方法を維持するのが好きです/var/run/
。
もともと起動されたプロセスが終了したら、新しく起動されたプロセスを「再検索」するようにsystemdに指示する方法はありますか? systemdはサービスを再起動しないため、マニュアルで見つかったほとんどの再起動関連のオプションは適用されません。
オペレーティングシステム:Ubuntu 15.04、システム219。
ベストアンサー1
元の実行可能ファイルが終了したら、systemdに他の実行可能ファイルを「再検索」するように指示する方法はありますか?
実行ファイルは死にません。プロセスが終了します。正しい質問をすると答えが出ます。以前の基本サービスプロセスが静かに終了するように、systemdに新しい基本サービスプロセスを作成してそれを渡すように指示する方法はありますか?まさにここに。notify
準備同意書です。
自分で試したことはありませんが、systemdモデルでこれを行う方法は、現在のデフォルトプロセスに新しいプログラムイメージを実行する代替サービスを作成させ、次にsd_notify
newでsystemdMAINPID
してデフォルトのプロセストーチを新しいプログラムに渡すことです。 、その後終了します。 (以前のマスタープロセスが新しいマスタープロセスと移行を交渉する必要がある場合、状況は少し複雑になります。)
私が言ったように、私はこの方法を使用したことがなく、過去数年間の回帰について話すことはできません。しかし、2011年には、人々がこの特定の問題を解決した方法が報告されています。
(もちろん、自己修正サービスプログラムを持つのではなく、プログラムがアップグレードされるサービスの実行コンテキストの外で実行される別の「更新」サービスを持つことが代替設計になる可能性があります。)