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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。