追加読書

追加読書

プロセスがクラッシュまたは終了したときにプロセスを再開する(プロセスIDを識別した後)、自動的に作成できるコマンド/スクリプトはありますか?

たとえば、実行可能なbinファイルを実行していて、競合または終了するたびに自動的に再起動したいとします。

答え1

次に展開イフレセセ使用に関するご意見systemd

~からRHEL 7ドキュメント:

Systemdは、Linuxオペレーティングシステムのシステムおよびサービスマネージャです。これはSysV initスクリプトと以前のバージョンと互換性があるように設計されており、起動時のシステムサービスの並列起動、要求時にデーモンの有効化、システム状態のスナップショットサポート、または依存性ベースのサービス制御ロジックなどの多くの機能を提供します。 Red Hat Enterprise Linux 7では、systemdはUpstartをデフォルトのinitシステムに置き換えます。

デフォルトでは、systemdサービスとシステムを全体的に管理します。プロセスを常に実行したい場合は、サービスのように機能したいと思います。カスタマイズされたサービス文書を作成することは難しくありません。

サービスファイルは次のものです。/etc/systemd/system/NAME.service 文書によると

カスタムサービスファイルの例RHEL 7ドキュメント再:

[Unit]
Description=service_description
After=network.target

[Service]
ExecStart=path_to_executable
Type=simple

[Install]
WantedBy=default.target

ファイルの機能の説明:

どこ:

service_descriptionは、ログファイルとsystemctl statusコマンドの出力に表示される情報の説明です。

After設定を使用すると、ネットワークが起動した後にのみサービスが開始されます。他の関連サービスまたはターゲットのスペースで区切られたリストを追加します。

path_to_executable は、実際のサービス実行可能ファイルのパスを示します。

...

WantedByは、サービスを開始する必要がある1つ以上のターゲットを指定します。これらのターゲットを以前のランレベルの概念に代わるものと考えてください。詳細は、9.3項「systemdターゲットの使用」を参照してください。

Type=simple標準であり、 で始まる実行可能ファイルがExecStart実行され続けると仮定します。

systemd元の質問に戻り、プロセスをサービスに切り替えるために使用している場合は、それを使用してsystemdサービスが常に実行されていることを確認できます。

~からRHEL 7ドキュメント再:

別の例は、基本プロセスが終了してから30秒遅れてサービスを再起動する構成ファイルです。

[Service]
Restart=always
RestartSec=30

Restart=alwaysファイルのサービスセクションにオプションを追加する[Service]systemd

答え2

ダンバーンスタインデーモンツールこれを目指し、同じ元のメカニズムを共有する一連のツールセットを始めました。

ほとんどの場合、runデーモンとして実行/動作するプログラムを作成し、サービスマネージャまたはスーパーバイザプロセスは通常のUnixおよびLinuxメカニズムを使用してフォークされたサブプロセスとして監視します。これは、スーパーユーザーとして実行される専用サービスマネージャを介してシステム全体で実行することも、別のサービスマネージャを介してユーザーごとに実行することもできます。

これらのツールセットはすべて一貫して一貫性がありますが、特定の状況に必要なツール以外のツールを使用する必要があるツールはありません。ミックス&マッチも可能です。 perpでは、Laurent Bercotのexeclinebすべてのユーティリティを使用でき、noshrunitで私のスクリプトインタプリタとすべてのユーティリティを使用できchpstますservice-manager

同様に、systemdで実行されているシステム全体またはユーザー固有のサービスを使用できます。 systemd 単位ファイルはスクリプトと同じ単純さを持ち、必須ではありませrunんが、サービスプロセスの実行状態を設定する方法について、きめ細かく正確な制御を提供しません。もちろん2017年だからsystemdに移行するための最初の規則適用可能です。

これらのすべては、ブートローダでデーモンを起動し、システムの実行中に管理者/自動制御下でデーモンを停止および開始し、さまざまな障害状態でデーモンを自動的に再起動するための基本的な基盤を提供します。

追加読書

関連情報