Windows脚本:监控并自动重启某个进程

发布时间:2024年01月22日


??在实际应用中,我们会发现有些程序(进程)在运行的时候可能会挂掉或电脑关机重启了某些进程没有自动启动,需要我们去监控该程序,并在它挂掉的时候迅速重启,确保该程序能一直运行。比如redis应用服务就经常挂,需要监控程序去监控。
??Linux系统有守护进程的概念,Windows系统可以使用dos批处理实现监控并重启某个进程,下面将介绍通过批处理实现监控并重启某个进程的全过程。

回到目录

1、编制脚本

??下面以redis服务进程redis-server.exe 为例,实现监控并重启该进程的全过程。
1

该进程的信息如下:
1、进程名称: redis-server.exe
2、进程安装目录:D:\work\redis

示例程序如下:

@echo off  
setlocal enabledelayedexpansion  
  
:RESTART  
tasklist /FI "IMAGENAME eq redis-server.exe" | find /C "redis-server.exe" > temp.txt  
set /p num=<temp.txt  
del /F temp.txt  
echo %num%  
if "%num%"=="0" (  
    start "" /D "D:\work\redis" redis-server.exe  
)  
ping -n 10 -w 2000 0.0.0.1 > nul  
goto RESTART

代码说明:

  • tasklist:是列出所有进程,可以指定只列出某用户的进程,用/FI参数过滤。
  • find /C:可以去tasklist的结果中查找指定进程名,并输出个数。
  • ping命令:使用ping命令自带的延迟参数-w,将IP地址设置成一个空地址,设置每隔一段时间去检测进程是否在运行。比如0.0.0.1,这样该命令会一直ping,直到一定n*w 毫秒后才返回(n和w分别是参数-n和-w指定的值)。
  • goto语句:将监控程序设置成死循环。
  • start /D path program:异步调用program程序, 即不等program指定完毕就执行下面的语句,因此可以设置固定间隔(n*w毫秒)去监测。

要是监控其他进程,如下所示图中标出部分都需要修改成实际需求的应用程序信息:

其中:

  • 1、2、4对应的是应用程序名称,对应任务管理器中的进程名称
  • 3、对应的应用服务的安装目录
    1

回到目录

2、创建并运行脚本

??在Windows上创建并运行脚本,需要根据脚本类型进行操作。最常见的脚本类型有批处理文件(.bat或.cmd)和PowerShell脚本。这里我以批处理bat文件为例:

  1. 创建文件(名称可自定义,后缀以.bat.cmd),这里我的文件名称为:pm_redis.bat
  2. 通过记事本打开文件,将上述代码复制到文件中,并保存,如上图所示。
  3. 双击运行pm_redis.bat脚本文件。此时会发现redis服务会自动启动,并且会定时检测。
    1

回到目录

3、设置开机自启动

??如果需要开机时自动pm_redis.bat脚本文件自动启动,将脚本文件移动到启动文件夹中。
??在Windows系统中,可以通过多种方法设置应用程序开机自启动,其中一种常见的方法是将应用程序放到启动文件夹中。有两种方式,一种是针对所有用户生效,另一种是只对某个用户生效。操作步骤如下:

  1. 所有用户启动都会自动启动:将脚本文件复制到 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 文件夹中
  2. 指定登录用户启动时会自动启动:打开启动文件夹(本用户的),win+R打开运行窗口,输入:shell:startup
    1
    将对应脚本拖到启动文件夹中
  3. 将电脑关机,测试会不会自动重启。

回到目录

4、某些软件加入启动项后,开机不会自动启动的解决方法

  • 问题:脚本加入启动项后,开机没有自动启动
  • 原因分析:win10系统,只要是图标右下角带盾牌标志的软件,加入系统的启动文件夹:如:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 里面,每次开机后都会启动失败!据说这个是win10出于系统安全考虑,加入了UAC,对系统管理员权限做了限制造成的。
  • 解决方案
  1. win+R打开运行窗口,运行打开组策略(家庭版没有组策略功能),输入:gpedit.msc
    1
  2. 依次展开:计算机配置-》Windows设置-》安全设置-》本地策略-》安全选项-》用户账户控制:以管理员批准模式运行所有管理员,设置为已禁用
    1
    2
    3
  3. 重启计算机

回到目录

文章来源:https://blog.csdn.net/weixin_44462773/article/details/135739385
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。