LoginSignup
1
3

More than 5 years have passed since last update.

案 > Windows > プログラム監視 > batによる解法を教えていただいた | tasklistによるプロセス存命の確認

Last updated at Posted at 2016-09-04

何かの理由で数時間に1回落ちるプログラムがあるとする。
落ちる条件はまだ見つかっていない。

IDEで落ちる時をとらえるようにすればいいが、別のプロジェクトでそのIDEを使うので、これはできない。

別のWindows上でプログラムを実行しつつ、落ちた時点に通知する仕組みがあれば、落ちるタイミングについての情報だけは集めることができる。

案は以下。

  1. プロセスを監視し続ける
  2. 落ちた時に指定のgmail(slack)に通知する

プロセス監視のC++実装は未学習。

ソフト自体にログ機能を実装できれば、そちらの方が詳細情報を得られるが、それができない場合に上記は有効だろうか。

code v0.1

試してみた

@mt08 さんのコメントを実装してみた。

起動するプログラムは

  • Project1.exe
  • Project2.exe

両者ともにCloseボタンがあるのみ。

foo.bat
:LOOP

start /wait Project1.exe
start /wait Project2.exe

GOTO LOOP

結果

Project1.exeが終了した時点で、Project2が起動する。
GOTO LOOPが有効なので、Project2が終了したらProject1が起動する。

Project2にgmail送信やslack通知のソフトを入れればソフト終了時に通知できる。
Project2側では通知が終われば自動終了する、にすればProject1が再起動するようになる。

この仕組みは将来的にたくさん使いそうです。

@mt08 さんに再度感謝。

code v0.1b > 終了日時だけ表示

通知の実装までしなくとも、「いつ落ちたか」を表示するには以下で良い。

foo.bat
:LOOP

start /wait Project1.exe
echo %DATE% %TIME%

GOTO LOOP

code v0.1c > ループしない

PAUSEで止めておく。PAUSEがないとProject1終了直後にコマンドプロンプトが閉じてしまう。

foo.bat
start /wait Project1.exe
echo %DATE% %TIME%

PAUSE
1
3
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3