EMQX在Windows系统下的开机自启与异常自动重启脚本

介绍

此脚本每隔60秒监测一次EMQX的运行状态,若未正常运行则重新启动该程序,我们可以给该脚本命名为 emqx_monitor.bat

    注意:使用前需要 将 EMQX_PATH 变量的值配置为你自己的 emqx 目录。
@echo off
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
 
set EMQX_PATH=E:\emqx
set OUTPUT_FILE=%EMQX_PATH%\emqx_monitor.log
 
:loop
cd /d "%EMQX_PATH%"
 
REM 获取当前日期时间,并格式化为时间戳
for /f "tokens=1-4 delims=/ " %%a in ('date /t') do (
    set year=%%a
    set month=%%b
    set day=%%c
)
for /f "tokens=1-3 delims=: " %%a in ('time /t') do (
    set hour=0%%a
    set minute=%%b
)
set timestamp=%year%-%month%-%day% %hour:~-2%:%minute%
 
cd bin
emqx_ctl status | findstr /C:"Node '[email protected]'" | findstr /C:"is started" >NUL
IF "%ERRORLEVEL%"=="0" (
    echo [%timestamp%] EMQX is running normally. >> %OUTPUT_FILE%
) ELSE (
    echo [%timestamp%] EMQX is not running. Restarting... >> %OUTPUT_FILE%
 
    REM 结束之前的 EMQX 进程,可以通过 taskkill 命令来实现
    REM taskkill /f /im beam.smp.exe >NUL
 
    start /b cmd /c "%EMQX_PATH%\bin\emqx start"
 
    echo [%timestamp%] EMQX has started. >> %OUTPUT_FILE%
 
)
 
timeout /t 60 > NUL
goto loop

运行与停止

双击该bat文件即可运行该批处理程序
运行后命令行黑窗口会一闪而过,同时emqx_monitor.log日志文件更新时间会一直刷新

EMQX在Windows系统下的开机自启与异常自动重启脚本_第1张图片

停止批处理程序

在任务管理其详细信息中可以找到cmd.exe 和 和conhost.exe 两个程序。
点击结束程序即可。
注意:两个程序必须都停止,且要先结束cmd.exe 再结束conhost.exe 否则会一直报错

EMQX在Windows系统下的开机自启与异常自动重启脚本_第2张图片

开机自启动

找到这个目录C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
EMQX在Windows系统下的开机自启与异常自动重启脚本_第3张图片

运行结果

日志文件是位于emqx 文件目录下的 emqx.log。
14:37时我手动停止EMQX 模拟崩溃场景,脚本成功将EMQX启动。
EMQX在Windows系统下的开机自启与异常自动重启脚本_第4张图片
访问页面:http://127.0.0.1:18083/
EMQX在Windows系统下的开机自启与异常自动重启脚本_第5张图片

你可能感兴趣的:(运维,windows)