クラッシュした場合に再起動されるプロセスが必要です。私は少しグーグルで検索し、簡単な解決策はdaemontoolsを使用することであることがわかりました。
設定方法がわかりませんでした。
- そのような機能を達成する最も簡単な方法は何ですか?
- 構成方法
クラッシュした場合に再起動されるプロセスが必要です。私は少しグーグルで検索し、簡単な解決策はdaemontoolsを使用することであることがわかりました。
設定方法がわかりませんでした。
回答:
UbuntuでUpstartで既に提供されている機能を探しているようです。respawn
構成内のスタンザは、まさに必要なことを行います。これに対処するための標準的ではない方法の使用をお勧めします。
管理しようとしているプロセスの詳細がなければ、構成がどのように見えるかを言うのは困難です。たとえば、フォークして自分自身をバックグラウンドに置くかどうかによって異なります。スタンザのUpstartのドキュメントにrespawn
詳細が記載されています。
残念ながら、ユーザージョブを適切に実行することはまだできません。ユーザージョブを実行するためにupstartを取得できません
火事で殺された場合でも、電卓アプリを実行し続けたいとしましょう(信号9)。
/etc/init/calculator.conf
(この記事に基づいて)で構成ファイルを作成します。
#!upstart
description "Calculator"
# Start job via the daemon control script. Replace "gert" with your username.
exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
実行して開始します
sudo start calculator
現在のディスプレイ(:0
)で開き、閉じた後に再起動するのを見ると素晴らしいものが楽しめます。
以下を実行して、プロセスIDを特定しますps aux | grep calculator
。
gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
火で殺します。
sudo kill -9 13695
再出現を見る:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
適切なユーザージョブサポートを備えたUbuntu 13.04プランのプランでは、これがよりエレガントになることに注意してください。
servicename.conf
開始するコマンドと一致する必要がありますstart servicename
。別の名前を選択したと思われます。
設定を必要とせずに同じ効果を達成できる非常にシンプルなツールはimmortal
次のとおりです:https : //immortal.run/
次のようにコマンドを実行するだけです:
immortal <cmd>
バックグラウンドで実行され、終了すると自動的に再起動します。
immortalctl
:実行中のジョブのステータスを表示します。name
ここに印刷される列があります。これを使用して、他の制御コマンドでジョブを参照できます。immortalctl stop <name>
:指定された名前のジョブの監視を停止します(自動的には再起動されませんが、現在のプロセスは実行を継続します)immortalctl -k <name>
:SIGKILLを現在のプロセスに送信します。immortalctl exit <name>
:指定された名前のジョブの監視を停止し、ジョブのリストから削除します。stdout
とstderr
フォアグラウンドでは?
immortalctl -l out.log <cmd> && tail -f out.log
同じ効果を得るために使用できます。
デーモン/サービス/バックグラウンドプロセス機能が不要で、コンソールで実行したい場合は、次のファイルを作成しますautorestart.sh
。
#!/bin/bash
while [ 1 ]; do
some_command
done
その後、./autorestart.sh
自動的に再起動しますsome_command
、それが終了またはクラッシュした場合。CTRL-Cはループを中断し、プログラムを完全に終了します。
Ubuntu 18.04でテスト済み。
「Upstart」なしの方法があります。キーワードは「inittab」です:-)。通常はデフォルトから変更されていないファイルですが、SYSVマシンで目的の再スポーンを実現するために使用できます。
ps-watcherは、実行中のプロセスを監視し、定義された状況でアクションを実行するツールです。インストールしましょう:
apt-get install ps-watcher
詳細については、PHP-FPMへのフォールバックを使用したHHVMの実行の下部を参照してください-これは私にとってはうまくいきました。
Ubuntu 15.04以降、起動と再生成プロセスは「systemd」によって管理されています。良い紹介はこちらにあります。
あなたが始めるための例はで利用可能です
https://www.devdungeon.com/content/creating-systemd-service-files
このアプローチは、/ etc / inittabおよびupstartに基づいた古いアプローチに優先します。