- PR -

プロセスのヘルスチェック方法

1
投稿者投稿内容
dede
常連さん
会議室デビュー日: 2003/10/01
投稿数: 47
投稿日時: 2006-05-31 23:42
dedeと申します。
win2000サーバにてあるフリーソフトで常時ログを出力しています。
ところがしばしばログの出力でエラーとなり(原因不明)、エラーダイアログが応答待ちのままとなり(つまりOKボタン押下すればいいのですが)ログ出力がとまってしまいます。フリーソフトゆえに原因追求もできずにいます。
そこで、このプロセスが正常に動作しているか否かヘルスチェックを行い、動作していないと思われる場合は強制的に再起動したいのです。
ヘルスチェックの方法は、1時間に1回ログファイル(*.txt)の更新時刻をチェックし1時間以上更新がない場合は再起動。
というしくみを作りたいのですが、windowsタスクで実行するとしても、ヘルスチェックの実現手段とプロセスの再起動方法がどうすればいいのかがよくわかりません。
実現方法についてアドバイスなどいただけると幸いです。
これを利用すればできる、でも構いませんのでよろしくお願いします。
dede
常連さん
会議室デビュー日: 2003/10/01
投稿数: 47
投稿日時: 2006-06-01 09:21
レスがつかないようで・・・
ある特定のプロセスを強制終了後、再起動する方法についてだけでも
なにかのスクリプトなどでできないものでしょうか??
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-06-01 10:22
引用:

dedeさんの書き込み (2006-05-31 23:42) より:
ところがしばしばログの出力でエラーとなり(原因不明)、エラーダイアログが応答待ちのままとなり(つまりOKボタン押下すればいいのですが)ログ出力がとまってしまいます。フリーソフトゆえに原因追求もできずにいます。


そのボタンを押せば良いのならば、ボタンを押すようにしたほうが簡単かもしれません。
良く目にする SendKeys などの類ではできないでしょうか?
かならずしも SendKeys に拘るわけではありませんが、要はボタンをクリックするウィンドウメッセージを送るということでやるという意図です。ボタンのクリック以外に、スペースキーや Enter キーを押すウィンドウメッセージでも良いかもしれません。
http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html
のようなやりかたではどうでしょうか。
そのダイアログがモーダルかそうでないかでも違うかもしれませんが。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
minminnana
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 246
お住まい・勤務地: 盛岡
投稿日時: 2006-06-01 10:39
引用:
ある特定のプロセスを強制終了後、再起動する方法についてだけでも
なにかのスクリプトなどでできないものでしょうか??



2000サーバーであれば、サポートツールの中にあるkillコマンドでプロセスは殺せると思います。
プロセスは、tasklistとかで。
あれ、2000にtasklistは無いかぁ。
やっぱり、サポートツールの中かな。(tlist?)

スクリプトでやるならば以下が参考になるかもしれません。
http://www.microsoft.com/japan/technet/scriptcenter/scripts/os/process/procthd/pcthvb09.mspx
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2006-06-01 15:21
ファイルの更新日チェックならこんな感じかな

コード:
var CheckMinSpan = 60;		// 更新間隔

// メインルーチンを実行
main();

function main()
{

	var args = WScript.Arguments;
	if( args.length < 1 )
		WScript.Quit( 100 );
	if( args.length > 1 )
		CheckMinSpan = args(1);

	// ファイルシステムオブジェクトを作成
	var fileSystem = WScript.CreateObject( "Scripting.FileSystemObject" );
	// チェック対象のファイルのファイルオブジェクトを取得
	var checkFile = fileSystem.GetFile( args(0) );

	// 更新時間チェック条件を計算(現在時刻から更新間隔を引く)
	var checkTime = new Date();
	checkTime.setMinutes( checkTime.getMinutes() - CheckMinSpan );

	// 指定されたファイルの更新日時が指定された更新間隔で更新されているかチェック
	var retCode;
	if( checkFile.DateLastModified > checkTime )
		retCode = 0;
	else
		retCode = 1;

	WScript.Quit( retCode );
}


dede
常連さん
会議室デビュー日: 2003/10/01
投稿数: 47
投稿日時: 2006-06-02 00:14
ありがとうございます!!
べ、勉強になります。

windows上で作るのは素人なんですが、いろいろやれて楽しそうです。

ありかがとうございました!!
1

スキルアップ/キャリアアップ(JOB@IT)