2004.10.31 いと AN HTTPDの自動再起動プログラム anhttpd_restart 【前準備】 1. AN HTTPDをサービスとして起動させる(Windows9x系では動かない)。 2. ActivePerlをインストールし、perl.exeに PATHを通す。 3. Windows2000には taskkill.exeがないので、インストールCD-ROMの  \support\tools\setup.exe を実行し、C:\Program Files\Support Tools に  インストールされる kill.exe を taskkill.exe の代わりに使う。  プログラムに以下の書き換えが必要である。   taskkill /f /t /im httpd.exe --> kill -f httpd.exe   rem kill -f drwtsn32.exe --> kill -f drwtsn32.exe (行頭の"rem "を削除) 4. WindowsXP HEにも taskkill.exe はないので、代わりに以下のページから  pstools.zip をダウンロードし、pskill.exe をPATHの通ったところに置く。 http://www.sysinternals.com/ntw2k/freeware/pstools.shtml  プログラムに以下の書き換えが必要である。   taskkill /f /t /im httpd.exe --> pskill httpd.exe  この pskill.exe は WindowsXP Pro, Windows2000でも動作する。 【インストール、実行】 1. 下記の URLから anhttpd_restart101.lzh をダウンロードする。 http://homepage1.nifty.com/yito/anhttpd/anhttpd_restart.html 2. 上記のファイルを解凍し、適当なフォルダ下に置く。 3. anhttpd_restart.bat をタスク登録し(実行するアカウントは Administrators  グループであること)、例えば2分間隔で繰り返し実行するように設定する。 4. この上で実行するアカウントに設定したアカウントでログオンする  (このアカウントをログオフするとタスクは実行されなくなるので要注意)。 5. batプログラムが正しく動作していることを以下のように確認する。  (1) コントロールパネルのサービスから AN HTTP Service を停止させる。  (2) 設定時間経過後に AN HTTPDが自動的に再起動すれば正常。 6. 実際に再起動が起きたときは、同じフォルダ下にログファイル(log.txt)が  作成される。ときどき内容を確認してみるとよい。 【設定】 設定はデフォルトのままで使えるが、必要に応じて以下の変更をしてもよい。 ・チェックの繰り返し回数(MAX)、繰り返しの時間間隔(INTERVAL)を変更する。  すぐに再起動させるか念入りに調べるかどうかの違い。 ・CGIの 500エラーが多発するなら、$fnameを直前のコメントを参考に設定する。 ・503エラーは BUSY 状態なのでエラーにしなくてもよいのかもしれない。  ステータスコードが何であればエラーとみなすかという問題。 ・以下の2行の有効性は未確認なのでとりあえずコメントにしている。   taskkill /f /t /im ansvc.exe   taskkill /f /t /im perl.exe 【その他】 ●コマンドプロンプトウィンドウを開閉しないために  タスク登録した batファイルは最小化状態で実行できないようである。 そのため自分のアカウントでタスク登録すると、実行が繰り返される度に コマンドプロンプト画面が開き、結構うるさいことになる。 administrator など普段ログオンしない他のアカウントがあれば、それを 実行するアカウントに設定すると自分のログオン画面には出ないので 都合がいい。なければ専用アカウントを作ってもよい。 もし自分以外のアカウントの使用が許されていないなら、苦肉の策ではあるが 以下のように batファイルを変更するとよい。 (1) batの 10行目 "set INTERVAL=30" の下に以下の 2行を挿入する。 :top echo sleep 120;|perl ここで 120 はタスクの繰り返し時間を例えば 2分としたのであれば それを秒で表現した数値である。ただし必ずしも一致させなくてもよい。 (2) 最終行 ":endofperl" の下に以下の 1行を追加する。 goto top これで batプログラムの中で実行を繰り返すような無限ループができる。 最初の実行時にコマンドプロンプトウィンドウが一度だけ開き、それを 最小化しておけば後は開いたり閉じたりすることはなくなる。 タスクの方は繰り返されなくなるが、万一コマンドプロンプトを閉じて しまったときの保険として残しておくとよい。 ●Windowsを再起動させるには  もし、AN HTTPDを再起動させるのではなく、Windows自体を再起動 させたいなら WindowsXP Proでは net start "AN HTTP Service" ではなく  shutdown -r -f を実行すればよい。WindowsXP HE, Windows2000では上記の pstoolsにある psshutdown.exe を使えばよい。  psshutdown -r -f 【本プログラムについて】 ・フリーソフト ・商用利用可 ・再配布自由 ・改造自由 ・使用は自己責任 【改版履歴】 ・2004.10.31 v1.01 (1)Perlのsleepを使う,(2)drwtsn32.exeをkill(コメント) ・2004.10.24 v1.00 公開 以上