web-dev-qa-db-ja.com

終了時にアプリケーションを自動的に再起動します

コンピューターが実行されているときはいつでも実行したいサーバーアプリケーションがありますが、通常はこれが当てはまります。

アプリケーションを監視し、アプリケーションが終了した場合に再起動するために実行できるバットまたはスクリプトはありますか?

10
Sid

これは常に機能するとは限りません(プログラムのロード方法に依存します)が、通常は次のようなバッチファイルを作成できます。

@Echo off
:Start
NotePad
echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log 
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost

goto Start

例としてメモ帳を使用しました。

台詞

echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost

ユーザーがプロセスを再開する前にプロセスを中止する機会を与えるための(10秒の)遅延です。

この線

echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log 

は必要ありませんが、プログラムがファイルに閉じられるたびにログに記録されるため、問題を診断するのに役立つ場合があります。ない場合はゼロのメッセージ

注:既に実行されている場合、プログラムは何も実行しないと述べました。これは通常、アプリケーションが起動し、別のコピーが既に実行されていることを検出してすぐにシャットダウンすることを意味します。その場合、このバッチファイルを開始する前にプログラムが実行されていると、バッチはループし、10秒ごとにプログラムを開始しようとします。

12
sgmoore

上記の回答に基づいて、私が提案するのは、そのコマンドをバッチファイルに入れ、そのバッチファイルを毎分スケジュールされたタスクとして実行するように設定することです。これに関連するオーバーヘッドは事実上なく、プロセスが停止したことに気づいているかどうかに関係なく、プロセスが宣言されることが保証されます。

2
KCotreau

ReStartMe 2. [ Mirror ]というプログラムを使用すると、次のようになります。

プロセスを監視し、プロセスが閉じた場合は再起動します。

2
Saxtus