守护进程

本文介绍了一种使用批处理脚本实现的守护进程解决方案。该方案包含三个主要脚本:Init.bat用于配置守护进程的路径信息;DeamonProcess.bat作为守护进程主脚本,周期性检查目标进程状态;ProcessCheck.bat负责检查指定进程是否运行,如未运行则启动之。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       在前段时间看到有位兄台用C#写了一个守护进程,挺好的,最近对批处理产生了很大兴趣,所以就试着用批处理写了一个守护进程批处理脚本。主要包括三个文件:ProcessCheck.bat、DeamonProcess.bat、Init.bat。分别具有以下职能:

       Init.bat

       (1)  设置需要守护程序的路径,将输入路径保存在根目录,生成processInfo.txt文件,文件格式为:path@name(d:\QQ.exe@QQ.exe) 。注意:如果路径中存在空格请使用""将其包括(当然也可以直接创建processInfo.txt文件,输入配置信息),如图所示:

ExpandedBlockStart.gif 代码
@echo   off
set   dir = " %~dp0processInfo.txt "
cd .   >   " %dir% "
echo  输入守护程序路径:
:insert
echo .
set   / p val =
FOR  %%i IN  ( %val% )   DO   SET  FN = %%~nxi
ECHO   %val%@%FN%  >> " %dir% "
echo .
set   / p check = 是否继续输入【Y / N】
if  %check% == goto  insert
      

      

       DeamonProcess.bat:

       (1)进程守护,读取文件processInfo.txt中配置,定时调用ProcessCheck.bat用于确认进程是否已经启动。可以对ProcessCheck.bat进行修改,提供其他核对条件:运行时间、内存占用量等。

      

ExpandedBlockStart.gif 代码
@echo   off
echo  开始守护进程
echo .
:loop
for   / " delims=@ tokens=1* "  %%i in  ( 'findstr  . " %~dp0processInfo.txt " ' )   do   (     
    
call  ProcessCheck . bat %%j %%i
    
echo .
)
:: 暂停60秒
ping -n  60   127.0 . 0.1   >  nul  
goto  loop



       ProcessCheck.bat:

       (1)核对程序是否已经运行,若未运行,将其启动 ,否则跳过。如上所述,可以修改文件ProcessCheck.bat、Init.bat增加核对条件,这里只实现了最简单的核对条件(是否已运行);通过WMIC PROCESS进行核对,其包括很多参数,根据需要进行选取(WMIC PROCESS GET /?),关于WMIC的一些参考信息:

       http://msdn.microsoft.com/en-us/library/aa394606%28v=VS.85%29.aspx

   http://blogold.chinaunix.net/u3/94687/showart_2045762.html

 

ExpandedBlockStart.gif 代码
@echo   off
wmic process where 
" commandline like '%%%1%%' and name!='wmic.exe' "  get name  / value| find   / " name "   > nul
If   ErrorLevel   1   goto  processstart
IF   ErrorLevel   0   goto  running
:processstart
echo  消息:% date %% time % 启动程序 %1
start   ""   %2
goto   end
:running
echo  消息:% date %% time % 正在运行 %1
:end

 

 

      扩展:

      可以使用schtasks将DeamonProcess.bat注册为当系统启动时自动运行:schtasks /create /tn DeamonProcess /tr "E:\守护进程\deamonProcess.bat" /sc onstart /u 用户名 /p 密码。

/Files/WGZ_Home/守护进程.rar

    

      

       

       


 

转载于:https://www.cnblogs.com/WGZ_Home/archive/2011/02/20/1958437.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值