banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

Windows下实现Deamon守护脚本

最近需要在 Windows 服务器上保持程序长期允许,因为程序比较老,无法用 srvany.exe 改写成 windows 服务,只能自己手动编写守护脚本实现,网上找了短比较靠谱的守护脚本,在此 mark 一下。支持监视进程、端口。

守护脚本定义部分

@echo off

:: 检测时间间隔,单位:秒
set _interval=5

:: 需要守护的进程名称
set _processName=ProcessName

:: 需要守护的进程启动命令
set _processCmd=C:\xxxx.exe

:: 需要守护的进程预估启动完毕所需时间,单位:秒
set _processTimeout=10

:: 需要守护的进程所监听的端口
set _port=8080

:: 进程用户名,一般是 Administrator
set _username=Administrator

执行部分

@echo off

set /a isAlive=false

:: 通过进程名称检测
::tasklist /FI "username eq %_username%" | find /C "%_processName%" > temp.txt
::set /p num= < temp.txt
::del /F temp.txt

:: 通过进程的端口是否正在被监听检测
netstat -an | find /C "0.0.0.0:%_port%" > temp.txt
set /p num= < temp.txt
del /F temp.txt

if "%num%" == "0" (
start %_processCmd% | echo 启动 %_processName% 于 % time%
choice /D y /t %_processTimeout% > nul
)

if "% num%" NEQ "0" echo 已启动

::ping -n %_interval% 127.1>nul
choice /D y /t %_interval% >nul

goto LOOP

使用 Script 方式启动并隐藏 CMD 窗口

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "guard.bat",0

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.