プロセスがクラッシュまたは終了したときにプロセスを再開する(プロセス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
すべてのユーティリティを使用でき、nosh
runitで私のスクリプトインタプリタとすべてのユーティリティを使用できchpst
ますservice-manager
。
同様に、systemdで実行されているシステム全体またはユーザー固有のサービスを使用できます。 systemd 単位ファイルはスクリプトと同じ単純さを持ち、必須ではありませrun
んが、サービスプロセスの実行状態を設定する方法について、きめ細かく正確な制御を提供しません。もちろん2017年だからsystemdに移行するための最初の規則適用可能です。
これらのすべては、ブートローダでデーモンを起動し、システムの実行中に管理者/自動制御下でデーモンを停止および開始し、さまざまな障害状態でデーモンを自動的に再起動するための基本的な基盤を提供します。
追加読書
- ジョシュア・ティンバーマン(2012-12-29)。プロセス監督:解決された問題。
- ラリー・デュリトル(2005-06-23)。Unixデーモンの基本。
- ジョナサンデボインポラード(2015)。デーモンツールシリーズ。よく与えられる答えです。
- ケビンJ.ディグラフ。 サービスを監視するためにdaemontoolsを使用する。
- daemontoolsサービスの例。接着剤ロジック。 2004年。
- ゲレットパフ。 実行スクリプトのコレクション。
- ジョナサンデボインポラード(2014)。実行中のスクリプトとサービスユニットを並べて表示します。。よく与えられる答えです。
- ジェームズ・ルーベン・ノールズ(2008-11-22)。CentOS 5にBernsteinのdaemontoolsをインストールする。
- エリック・ルボ(2010-03-26)。CentOS 5でdaemontoolsを設定する 。
- https://unix.stackexchange.com/a/177395/5132
- プロセスが常に実行されていることを確認してください。
- ソースからUbuntuまたはDebianにdaemontoolsをインストールする方法(回答にはCentOSが含まれます)