zoukankan      html  css  js  c++  java
  • 守护进程

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

           Init.bat

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

    代码
    @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进行修改,提供其他核对条件:运行时间、内存占用量等。

          

    代码
    @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

    代码
    @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

        

          

           

           


  • 相关阅读:
    swift3.0 运行时获取类的属性
    Runloop与autoreleasePool联系
    iOS 加载Image的两种方式
    iOS strong与weak的使用
    iOS 自定义layer的两种方式
    iOS 手势识别
    iOS Quartz2D画图
    iOS 通知的使用
    UITableViewController
    UITableView移动
  • 原文地址:https://www.cnblogs.com/WGZ_Home/p/1958437.html
Copyright © 2011-2022 走看看