線上運行的windows服務和窗體服務程序經常掛掉,只能從windows日志中找到報了底層錯誤,問題無法定位,目前的辦法是在服務器上運行守護進程
window服務守護進程
@echo off
title "數據中間件服務(windows服務)"守護進程,發布服務時請臨時關閉此進程
rem 定義循環間隔時間和監測的服務:
set secs=60
set srvname="khdataserver"
set showname="數據中間件服務"
echo.
echo ========================================
echo == 查詢計算機服務的狀態, ==
echo == 每間隔%secs%秒種進行一次查詢 ==
echo == 如發現其停止,則立即啟動 ==
echo ========================================
echo.
echo 此腳本監測的服務是:%showname%
echo.
if %srvname%. == . goto end
:chkit
set svrst=0
for /F "tokens=1* delims= " %%a in ('net start') do if /I "%%a %%b" == %srvname% set svrst=1
if %svrst% == 0 net start %srvname%
set svrst=
rem 下面的命令用於延時,否則可能會導致cpu單個核心滿載。
ping -n %secs% 127.0.0.1 > nul
goto chkit
:end
windows窗體守護進程
@echo off
title "數據中間件服務(windows窗體)"守護進程,發布服務時請臨時關閉此進程
rem 定義循環間隔時間和監測的服務:
set secs=10
set exename="khdataserver.exe"
set exepath="D:/01-myproject/khdataserver.exe"
set showname="數據中間件服務"
echo.
echo ========================================
echo == 查詢計算機服務的狀態 ==
echo == 每間隔%secs%秒種進行一次查詢 ==
echo == 如發現其停止,則立即啟動 ==
echo ========================================
echo.
echo 此腳本監測的服務是:%showname%
echo.
if %exename%. == . goto end
:chkit
set svrst=0
for /f %%i in ('tasklist') do if /I "%%i" == %exename% set svrst=1
if %svrst% == 0 start "" %exepath%
set svrst=
rem 下面的命令用於延時,否則可能會導致cpu單個核心滿載。
ping -n %secs% 127.0.0.1 > nul
goto chkit
:end