美文网首页
Window下使用bat批处理实现进程守护

Window下使用bat批处理实现进程守护

作者: 刘小白DOER | 来源:发表于2021-03-28 20:21 被阅读0次

    笔者早linux中写过shell脚本来实现进程守护(参考文章-Linux进程怎么保证高可用性),思路是判断进程是否存在,如果不存在就开启进程,然后将脚本加入到crontab定时任务中来定时检查进程是否存在。

    笔者参与的项目有个可视化监控程序,这个需要7*24展示在界面上提供给运维人员来查看并记录设备状态的告警。为了防止进程down掉或被人误关闭,笔者想着能不能在Window下使用bat批处理实现进程守护?在另外的其他项目里面,为了防止监控程序被误关闭加入了关闭界面时需要输入密码认证,只有认证成功后才能关闭,但是为预防关闭后没有打开,进程守护的使用很有必要的。

      原理和shell是一样的,通过tasklist | find /C "进程名.exe" 判断进程是否存在,如果不存在则启动start  进程名.exe 。先在cmd里面来测试一下进程:

    也可以使用qprocess来代替tasklist。

    先看代码,笔者使用PUTTY.EXE来测试。

@echo off

title task进程监控

rem 定义需要监控程序的进程名和程序路径

set taskName=PUTTY.EXE

set taskPath=D:\putty\

cls

echo.

echo task进程守护开始……

echo.

rem 定义循环体

:task_protect

  rem 进程列表中查找指定进程

  qprocess|findstr /i %taskName% >nul

  rem 变量errorlevel的值等于0表示查找到进程,否则没有查找到进程

  if %errorlevel%==0 (

        echo ^>%date:~0,10% %time:~0,8% 程序正在运行……

    )else (

          echo ^>%date:~0,10% %time:~0,8% 没有发现程序进程

          echo ^>%date:~0,10% %time:~0,8% 正在重新启动程序

          start %taskPath%%taskName% 2>nul && echo ^>%date:~0,10% %time:~0,8% 启动程序成功

  )

  rem 用ping命令来实现延时运行

  ::for /l %%i in (1,1,10) do ping -n 1 -w 1000 198.20.0.1>nul

  ping -n 10 127.0.0.1>nul

  goto task_protect

echo on

bat执行效果

    bat脚本里面有几个地方需要关注:

    1、errorlevel的值表示上个命令的返回值(shell中是$?),等于0表示执行成功,查找到进程。

   2、逻辑运算符“&&”表示只有在符号 && 前面的命令成功时,才用于运行该符号后面的命令。这样可以判断启动程序是成功的。

   3、 bat没有shell一样的延时函数sleep,ping 命令 -n参数表示发送1个icmp包,-w 1000 表示等待回复的超时时间为1秒。或者直接使用 ping -n 10 127.0.0.1>nul ,通过控制ping的次数来延时,但是精度不高,10次大概时9秒左右。

    同时需要注意的是,如果你的程序是中文名,名称太长的话,那么搜索进程需要根据任务管理器里面的名称来搜索。可以考虑再定义一个变量searchName来定义qprocess的搜索名称。

    这个批处理打开后会有dos界面的。网络上又两种方法来隐藏窗口,一是在bat文件头部添加,一种是利用vbs脚本完成在,再次就不再赘述了。但是为了方便,笔者修改上面的批处理脚本,删除循环,保留查找进程与开启进程,然后利用windows的任务计划程序来定时调用批处理脚本。

    接下里就是任务计划里面编辑添加基本任务了,按照流程命名任务计划、触发器、操作选择批处理等等。

相关文章

  • Window下使用bat批处理实现进程守护

    笔者早linux中写过shell脚本来实现进程守护(参考文章-Linux进程怎么保证高可用性),思路是判断进程...

  • 进程守护

    windows服务守护进程bat脚本、windows窗体守护进程bat脚本 windows 之 bat 实现进程守...

  • Windows bat 批处理守护进程

    如果不想显示守护进程页面可使用 vb 隐藏,将上面的守护代码保存为 watchdog.bat。 把上面的代码保存为...

  • 聊聊守护进程这点事

    前言 我们经常使用守护进程,却不是很清楚其原理。本文就来聊下什么是守护进程,如何一步一步使用代码来实现守护进程。 ...

  • 进程守护进程

    什么是守护进程?Linux 的大多数服务器就是用守护进程实现的,使用ps -axj可以查看守护进程: 守护进程基本...

  • Window批处理(.bat文件)

    前言简介 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。用户只需双击批处理...

  • windows 批处理文件(bat)

    windows 批处理文件(bat) 批处理的作用就是自动的连续执行多条命令 .编写bat处理文件可以使用记事本的...

  • 4.5、守护进程及信号处理实战

    1、守护进程功能的实现守护进程融入项目,解放终端。相关配置:Daemon = 1;按照守护进程的方式运行守护进程如...

  • crontab

    crond进程 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与window...

  • 经验总结 - 收藏集 - 掘金

    安卓开发:使用双进程守护和进程提权来实现服务进程保活 - Android - 掘金在 如何让我们的Android应...

网友评论

      本文标题:Window下使用bat批处理实现进程守护

      本文链接:https://www.haomeiwen.com/subject/hpfuhltx.html