バッチファイルでWindowsのサービスを再起動する方法を使えば、タスクに登録したスケジュールで定期的にWindowsのサービスを再起動できる。
でも、Apacheなんかはたまに停止時にゴミプロセスが残っていたりして、直後の起動に失敗することがある。
そこで、起動を何度かリトライするようにしてみる。
@ECHO OFF
SET service_name=apache2
NET STOP %service_name%
SET max_count=3
SET loop_count=0
:service_start
NET START %service_name%
REM STARTできたら終わり
IF %errorLevel% == 0 GOTO service_restart_end
ECHO start失敗 (error level %errorLevel%)
SET /A loop_count=%loop_count% + 1
IF NOT %loop_count% == %max_count% GOTO service_start
:service_restart_end
for文では変数の遅延展開がある(参考floatingdays: コマンドプロンプトで繰り返し処理)のに注意。(なのでGOTOを使ったループにした。)
また、GOTOを使ったループでは、間違えて永久ループにしないようにも注意。
関連記事:
floatingdays: バッチファイルでWindowsのサービスを再起動する方法
floatingdays: コマンドプロンプトで繰り返し処理
参考:
コマンドプロンプトを使ってみよう! -バッチファイル-
コマンドプロンプトで実行ファイルの戻り値を取得する:システム開発メモ:So-net blog
0 件のコメント:
コメントを投稿