• ベストアンサー

Windowsでのプロセス監視方法について

いつもお世話になっています。 現在、Windows2003サーバにて稼働しているバッチプログラムがあります。 冗長化されておらず、サーバがダウンすると他のマシンにてスタンバイされているプログラムを手動で実行しなくてはならず、深夜などは回復まで時間がかかってしまう状況です。 理想としては、現在稼働しているマシンがダウン、もしくはバッチプロセスが何らかの理由で落ちてしまった場合は、 もう片方のマシンでそれを検知し、そのマシンで自動的にバッチが起動する、というような状態にしたいのですが、 何か簡単な方法がありましたら、概要だけで構わないのでご教授いただけませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#17296
noname#17296
回答No.3

私なら cscriptのsleepで定期的に処理を止め永久ループ Windowsスクリプトのtasklistで対象のシステムのプロセスを検知 errorlevelで判断し、自システム内プロセス起動後、当処理終了 なんてな感じにするような気がします。

その他の回答 (2)

  • CXI00554
  • ベストアンサー率27% (57/205)
回答No.2

こういう目的の製品としてはSNMPを利用した仕掛けがあるので検索して見て下さい。 後は…んー。Cでpingコマンド書くとか。サーバ側にノータッチという制約 があると、すみませんがちょっと思いつきません。

yukio200263
質問者

お礼

ご回答ありがとうございます。 WSHを利用してのプロセス監視ができるというような話を聞いたのですが、実際はどうなのでしょうか?

  • CXI00554
  • ベストアンサー率27% (57/205)
回答No.1

相手マシンがダウンしているかどうかを検知する方法としては、 (1)相手マシンから定期的に何かメッセージを送信させ、こちらではそれを 監視。(2)メッセージが届かなくなったら以上と判断して必要なアクションを起こす。 というような仕掛けになると思います。JavaやCなどで実装できると思います。 あくまでも概要ですが。

yukio200263
質問者

お礼

さっそくのご回答ありがとうございます。 質問に書き忘れたのですが、できれば現在動いているサーバはなるべく何も変更せず、新規サーバを一台追加して、そのマシンにプロセス監視プログラムのようなものを設定し動かす、見たいなのが望ましいのですが、そのようなソフト、もしくは適した言語などありましたらご教授ください

関連するQ&A

  • 他のサーバのプロセスを停止する方法

    他のサーバのバッチプログラムを起動、停止するツールを作成しようと思っています。 同じサーバ内であればsendMessageによりフォームをクローズすることにより安全に停止できました。 他のサーバ上のプロセスについても同様に停止する方法はないでしょうか? 強制終了する方法は何とか見つけたのですが・・・。 困っているので、助けてください。

  • 2重化対策

    現在同一webサーバー2台を完全2重化させ、片方の稼働系がダウンした場合、もう片方の待機系で動作を切り替え無停止にさせることを考えています。サーバーにロードバランサを接続すれば可能とのことですが、ロードバランサは100万以上します。何か他のハード機器で障害検知し、動作を切り替えるようなものはないでしょうか?もちろんビジネス用です。

  • プロセスを監視するシェルスクリプトのエラー

    現在作成している定期的にTCPサーバーに対してクライアントが動作しているかどうかを知らせるためパケットを送信するプログラムをpythonで作成し、ラズパイ起動時に自動起動でこのプログラムを起動しているのですが、起動する時としない時があるのでこのプロセスが正常に動作しているかどうかを確認したく、このようなプログラムを作成しました。 (tcp_client1_02_process_check.shの内容) #!/usr/bin/sh while true do #ここではftpdのプロセス監視 isAlive=`ps -ef | grep " sudo python /home/pi/Desktop/tcp_client1_02.py " | \ grep -v grep | wc -l` if [ $isAlive = 1 ]; then echo "プロセスは生きています" else echo "プロセスは死んでいます" sudo /home/pi/python/autorun_script fi sleep 3 done このプログラムはこのサイトを参考にさせて頂きました。 Linux上のプロセスを監視して、プロセスがダウンしたら再起動させるShell http://tech.thekyo.jp/linux%e4%b8%8a%e3%81%ae%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e3%82%92%e7%9b%a3%e8%a6%96%e3%81%97%e3%81%a6%e3%80%81%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e3%81%8c%e3%83%80%e3%82%a6%e3%83%b3%e3%81%97/91/ このプログラムを sh tcp_client1_02_process_check.sh これで起動すると次のようなエラーが出てきます。 tcp_client1_02_process_check.sh: 14: tcp_client1_02_process_check.sh: Syntax error: "done" unexpected (expecting "then") このエラーどのようなエラー内容なのでしょうか? どうぞ、ご教示いただきますよう宜しくお願い致します。

  • プロセスを指定してsend??

    先日から引き続きなのですが、またIPCでつまってしまいました。 現在プロセス間でデータをお互いにやり取りをしているのですが、 serverからclientにデータを送ったときは正しく送れているのに、 その後clientで処理をして、再びserverに返すときには、うまく返りません。 client側は送っているようなのですが、 serverが受け取っていません。 clientが自分自身に送ってしまっている可能性があるようです。 現在は同一マシン内で作業しているので、 二つともIPアドレスが同じだからだと思うのですが、 これを解決する方法はあるのでしょうか? send、recvするときにプロセスを指定することは可能でしょうか? 教えていただけるとありがたいです。

  • プロセス停止方法

    環境 Vaio PCG-R505VJ/K Windows 2000 [Version 5.00.2195] タスクマネージャのプロセスに表示されている 特定のプロセスをバッチファイルで停止したい。 下記2つ JogServ2.exe DragDrop.exe 現在は JogServ2.exeはClearJog.exeをスタートアップに入れ対応しているがダイアログでOKの入力が必要(毎回面倒) 理由 JogServ2.exeは使用しないしあると逆に邪魔 ドッキングステーションが無い為DragDrop.exeは常時起動の必要なし。 停止方法等探したが分からなかったので安易だが、プロセス終了する方法で対応したい ※プログラムを削除・リネームで起動しない等の対応ではなく 起動時にプロセスを立ち上げない/起動時に上がってしまったものを停止する等の措置での対応が希望です。

  • IISの停止を監視する

    IISの停止を監視する IISを使って社内用Webサーバーを使用しております。 Windows Server 2003 Standard SP2 IIS 6.0 深夜にIISを停止させ、NTBackupでバックアップを実行、再起動させるというバッチファイルを組んで タスクで毎日実行させているのですが、IISが止まったままになってしまうことが多々あります。 原因を調べようとイベントビューアでログを確認しているのですが IISに関連するログは残っていません。 そこでIISのプロセスを監視して、いつとまっているのかログを残したいのですが 良い方法がありましたら、教えてください。 当方サーバー管理は初心者です。

  • WindowsでCPU100%時に特定バッチを実行

    Windows10でCPU100%の状態が続いたら特定のバッチを実行したいのですが 簡単な方法を教えてください。 具体的にはとあるプログラムを24時間走らせる専用のパソコンがあるのですが そのプログラムのプロセスのCPU使用率が時々100%で張り付いてそのプログラムのパフォーマンスが著しく落ちます。根本的な解決ができればいいのですが海外制フリーウェアのため難しいです 今は手動でそのプログラムを終了するとCPU100%が解消されるのでまた手動で起動していますがこれを自動化したいです。なお強制終了しても問題ないプログラムです。 よろしくお願いします。

  • ホットスタンバイとロードバランサの違い

    ホットスタンバイとロードバランサの違い 基本情報の勉強をしています。 疑問に思ったのですが、サーバを2重化するときにロードバランサを使用する場合と 比較して、ホットスタンバイのメリットがわかりません。 私の認識では、2台のサーバをどちらとも稼動させておく点や、 片系がダウンしても全体としては稼動し続ける点は共通しており、 相違点は2台とも稼動している時にサーバ2台分の処理能力があるか、1台分しか無いか、 という点のみだと考えています。 この場合ホットスタンバイのメリットが見えないのですが、ホットスタンバイにも 何か優れている点はあるのでしょうか?

  • バッチファイルでウインドウを閉じる方法ってありますか?

    こんにちは、皆さんの知恵を貸してください。 自分はプログラムとかコマンドプロンプトなどはまったくの初心者ですが、研究で必要に迫られて現在勉強中・修行中の大学院生です。 OSはウインドウズXPです。コマンドプロンプトを起動して、とある計算コードを走らせます。計算時間が10時間弱かかるので連続計算させる為にバッチファイルを作ることにしました。 作製してみたところ、コードのexeファイルが起動すると新しいウインドウができてそこで実行されます。そしてそのウインドウを閉じないとバッチファイルに記述した次のファイルが読み込まれません。 週末とか、深夜とかにPCの前にいなくても計算を走らせる為に組んだバッチですが、手動でウインドウを消すのであればまったく無意味です。 ここで質問が2つあります。 1.計算が終了した、と認識させるにはどういう手段があるでしょう? 2.計算が終了したらそのファイル(ウインドウ)を閉じるようなコマンドって存在しますか? 1で計算終了を判断し、2でそのウインドウを削除する事ができれば次の計算が走るようになると思うのですが… IFとかCALLとか考えてみたのですが、どうにもわからずパニックに陥っててます。どうか皆さん、よろしくお願いします。 (;_;)

  • UniXとWindowsのプロセス間制御について

    今現在unixのC言語ベースで作成されたシステムを一部windowsのJava言語ベースに移行することを考えています。 概要は、 1.Unixで作られたGUIより、Windows側に処理の実行パラメータを送信。 2.Windows側でそのパラメータを受信し解析し適切な処理を行う。 3.処理結果を再度Unix側へ送信。 Unixからのパラメータ送信は、複数台ありWindows側は1台のマシンにて処理を行うことになります。 言語はすでに確定しており、unixとwindows間でのプロセス管理を行うための最良の方法の選択に困っています。 私が調べた中では、Winsock2もしくはJavaのSocketを使うなどのいくつか方法があるようなのですが。 どの方法を選択するのか最良なのか教えてください。 もし上記事例が載っているサイトなどがあればあわせて教えていただけると助かります。 よろしくお願いします。