コンピューターが実行されているときはいつでも実行したいサーバーアプリケーションがありますが、通常はこれが当てはまります。
アプリケーションを監視し、アプリケーションが終了した場合に再起動するために実行できるバットまたはスクリプトはありますか?
コンピューターが実行されているときはいつでも実行したいサーバーアプリケーションがありますが、通常はこれが当てはまります。
アプリケーションを監視し、アプリケーションが終了した場合に再起動するために実行できるバットまたはスクリプトはありますか?
回答:
これは常に機能するとは限りません(プログラムのロード方法に依存します)が、通常は次のようなバッチファイルを作成できます。
@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
は必要ありませんが、プログラムがファイルに閉じられるたびにログに記録されるため、問題を診断するのに役立つ場合があります。ErrorLevelはあまり知らないかもしれませんが、プログラムが正常に閉じた場合は0を返し、ない場合はゼロのメッセージ
注:既に実行されている場合、プログラムは何も実行しないと述べました。これは通常、アプリケーションが起動し、別のコピーがすでに実行されていることを検出して、すぐにシャットダウンすることを意味します。その場合、このバッチファイルを開始する前にプログラムが実行されていると、バッチはループして10秒ごとにプログラムを開始しようとします。
上記の回答に基づいて、私が提案するのは、そのコマンドをバッチファイルに入れ、そのバッチファイルを毎分スケジュールされたタスクとして実行するように設定することです。これに関連するオーバーヘッドは事実上なく、プロセスが停止したことに気づいているかどうかに関係なく、プロセスが明示されます。
この質問への正しい答えは、なぜあなたがそれをしたいのかによります。偶発的なシャットダウンを解決しようとしていますか?マシンのユーザー(例:監視ソフトウェアを閉じる従業員)による「悪意のある」シャットダウンを偶然に防止しますか?深刻で巧妙な悪意のある攻撃を防ぎますか?マルウェアを自分で作成しようとしていますか(その場合は、削除してください;-))?
また、他のコメンターが述べたように、Windowsサービスを作成した場合(たとえば)
個人的には、2番目のアプリケーションを作成して、同じ方法で起動することから始めます。持っている両方のアプリケーションがスキャン互いに必要に応じて定期的に再起動-あなたが合法的にかかわらず、クローズするアプリケーションのための簡単な方法を提供します!
とはいえ、「時々私はそれ自体が閉じていると思うことがある」というコメントがあれば、私は実際にそれが閉じている理由を見つけることから始めます...
ReStartMe 2.0 [ Mirror ] と呼ばれるプログラムを使用すると、まさに次のようになります。
プロセスを監視し、プロセスが閉じた場合は再起動します。
これはずっと良いです!これは私がminetestゲームサーバーに使用しているいくつかのコードで、.batファイルに保存する必要があります
@echo off
rem This is a comment line
rem This one is a comment too
rem Following line ensures the working directory is searched in C:
C:
rem Join the correct directory, where the server stuff lies in:
cd "C:\Users\morenavaj\Documents\minetest-0.4.16-win64 - Lone_Wolf\"
:love_spaghetti_code
bin\server.lnk --config minetest.conf ^
--worldname "Land of Blockheads" ^
--gameid minetest_game ^
--port 30000 ^
--logfile bin/debug.txt
echo Restarting server....
goto love_spaghetti_code
echo Done (this should never, ever, happen)