実行ファイル(exe形式)の自動復旧について

この方法なら、サービス起動しないが常駐させたいexe形式のアプリケーションを汎用的に自動復旧する事が出来ます

こんな事を考えるようになった経緯は、極稀にTVRockが落ちて動かなくなっている事があるのでTVRockが停止した時に自動復旧させたいという思い付きです

番組表を見て予約とかしようとした時に処理が重くなってtvrockが停止するという事が稀にあります

今までは面倒ですがリモートログインしてアプリケーションを手動で再立ち上げしていました

時にはTVRockが動いておらず、録画が出来ていない・・・なんて悲惨なこともありました

複雑な形にしたくない

出来れば簡潔に、簡素に、簡便にがモットーの私なので、複雑なコードにはしたくありません

find使ってプロセス見つけたりif文でどうのこうのはしたくありません

というわけで、超簡単な自動復旧方法を考えました

アプリの巡回起動

巡回起動というとめんどくさそうと思うかもしれませんが、これは文字の装飾でしかありません

あまりに単純過ぎてダサいので、表現ぐらいは・・・という軽い思いです

では実際のコードを見て頂きましょう

@if not "%~0"=="%~dp0.\%~nx0" start /min cmd /c,"%~dp0.\%~nx0" %* & goto :eof
:LOOP

start /wait "" "C:\tv\tvrock\tvrock.exe"
echo %DATE% %TIME%

GOTO LOOP

これでもややこしい・・・と思う方もいるかもしれません

内容は以下の通りです

@if not “%~0″==”%~dp0.\%~nx0″ start /min cmd /c,”%~dp0.\%~nx0” %* & goto :eof

魔法の言葉です。これを入れてるだけでバッチが自動的に最小化されて起動します

こちらのブログを参考にさせて頂きました → http://d.hatena.ne.jp/firedfly/20091124#p1

:LOOP

ループという戻り点を設けてます。あとでここに戻ってきます

start /wait “” “C:\tv\tvrock\tvrock.exe”

〇〇というアプリケーション(ここではtvrock.exe)の起動後、アプリが終了するまで待機します。アプリの前の””はこれを入れてないとコマンドプロンプトがバンバン出てきて邪魔なので入れてます

echo %DATE% %TIME%

この行は別に無くてもいいですが、いつ落ちたのかの時間を表示します。これをテキストに保存してログにしたい場合は、>> C:\logs.txtみたいにすれば保存出来ます

GOTO LOOP

先ほど設けた:LOOPに戻ります

という非常に簡素な内容です

後は、このバッチファイルをタスクマネージャでシステムが起動した時に自動実行するようにするだけで、何とも簡単な自動復旧システムの出来上がりです

満足。

TVRockの場合注意点あり

TVRockを使ってる人場合は、ログイン時の自動起動のチェックを外してくださいね

これで安心