プロセスがクラッシュまたは終了したときにプロセスを再開する(プロセス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