如果你经常设计一些接口、运行程序以及服务的话,可能会遇到运行程序异常退出了,或者被人不小心关闭了或者服务器重启后没有运行,等等一些运行中被意外中断的事情。这种事情对我来说,很头疼,经常发生接口程序被莫名的关闭了,结果发现的时候数据已经缺少很多天的数据了。为了能比较有效的监控服务程序的运行并及时处理,现较简单的通过批处理设计了一个对windows程序进行监控的后台程序,现将设计介绍如下:
首先说明此程序为通过编写配置文件,程序自动根据配置进行监控。
1、复制以下代码保存为promonitor.bat
@echo off
echo 1>nul 2>nul
title 进程监控
setlocal enabledelayedexpansion
set /a index=1
:begin
FOR /F "eol=* tokens=1,2,3,* delims= " %%i in (c:/promonitor/promonitor.ini) do call :__monitor %%i %%j %%k %%l
del c:/tczc.txt /f
ping 127.0.0.1 -n 10>nul
goto begin
endlocal
exit
:__monitor
echo @@czcczcczczczczczczczczczczczczczczczc@@>c:/tczc.txt
tasklist /fi "imagename eq %1">>c:/tczc.txt
echo @@czcczcczczczczczczczczczczczczczczczc@@>>c:/tczc.txt
set /a flag=0
FOR /F "tokens=1,* delims= " %%i in (c:/tczc.txt) do ( if "%%i" == "%1" set /a flag=1 )
if "%flag%" =="0" if "%4"=="0" cd /d %3 & start %2 & call :__wlog %1
if "%flag%" =="0" if "%4"=="1" cd /d %3 & net start %2 & call :__wlog %1
goto eof
:__wlog
set wdate=%date% %time%
echo [!index!]!wdate! 监测到%1未启动,重新启动成功>>c:/promonitor/prolog.txt
echo [!index!]!wdate! 监测到%1未启动,重新启动成功
set /a index=!index!+1
:eof
2、配置文件
格式如下所示:
********************************************************************************************************
*进程名称 *启动程序名或服务名 *启动路径 * 运行方式 应用程序:0,服务程序:1 *
********************************************************************************************************
notepad.exe notepad.exe . 0
pmunit.exe PMUintService . 1
说明:进程名称:即程序启动后任务管理器中存在的进程名。
启动程序名或服务名:即在cmd命令中启动程序的命令。
启动路径:程序赖以运行的路径。
运行方式:一般的界面或后台进程程序为应用程序 值为0;如果为服务程序则为1。