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

目录

0.前言

1.介绍

2.运行与停止

2.1 运行批处理程序

2.2 停止批处理程序

2.3 开机自启动

3.运行结果

4.详细介绍

5.前台运行版本


0.前言

        由于为某万年老项目做运维,但源码遗失以及项目遗留问题导致emqx经常崩溃,故无法追根溯源,迫于无奈才不得已出此下策,以定时监测并自动重启EXMQ为临时解决方案,若能一劳永逸当然再好不过,各位友友们自求多福。

1.介绍

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

        注意:使用前需要 将 EMQX_PATH 变量的值配置为你自己的 emqx 目录。

        emqx_monitor.bat 文件下载

@echo off
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exitset 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=%%aset month=%%bset day=%%c
)
for /f "tokens=1-3 delims=: " %%a in ('time /t') do (set hour=0%%aset minute=%%b
)
set timestamp=%year%-%month%-%day% %hour:~-2%:%minute%cd bin
emqx_ctl status | findstr /C:"Node 'emqx@127.0.0.1'" | 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 >NULstart /b cmd /c "%EMQX_PATH%\bin\emqx start"echo [%timestamp%] EMQX has started. >> %OUTPUT_FILE%)timeout /t 60 > NUL
goto loop

2.运行与停止

2.1 运行批处理程序

双击该bat文件即可运行该批处理程序

运行后命令行黑窗口会一闪而过,同时emqx_monitor.log日志文件更新时间会一直刷新


2.2 停止批处理程序

在任务管理其详细信息中可以找到cmd.exe 和 和conhost.exe 两个程序。

点击结束程序即可。

注意:两个程序必须都停止,且要先结束cmd.exe 再结束conhost.exe 否则会一直报错

2.3 开机自启动

  加入windows系统启动项,以实现开机自启。

3.运行结果

日志文件是位于emqx 文件目录下的 emqx_monitor.log。
15:26时我手动停止EMQX 模拟崩溃场景,脚本成功将EMQX启动。

通过网页验证访问成功

4.详细介绍

由于本人过于懒惰,以下内容为ChatGPT生成,大致看了一下解释应该没什么大问题,若有问题请在下方评论区指出吧

这段代码是一个批处理文件,它执行一些操作来监视和管理 EMQX 服务。让我们逐行解释这些代码的作用:

1. `@echo off`: 这行代码告诉批处理脚本在执行时不要显示命令的输出。这样可以使脚本更加清晰,只输出自定义的信息。

2. `%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit`: 这行代码使用 VBScript 创建一个新的窗口来运行批处理文件,并立即关闭该窗口。这样可以使批处理文件在后台运行,而不会显示命令提示符窗口。

3. `set EMQX_PATH=E:\emqx`: 这行代码设置一个变量 `EMQX_PATH`,用于指定 EMQX 服务的路径。

4. `set OUTPUT_FILE=%EMQX_PATH%\emqx_monitor.log`: 这行代码设置一个变量 `OUTPUT_FILE`,用于指定输出日志文件的路径和名称。

5. `:loop` 和 `goto loop`: 这部分代码创建了一个无限循环,使批处理文件可以持续监视 EMQX 服务的状态。

6. `cd /d "%EMQX_PATH%"`: 这行代码将当前工作目录更改为 EMQX 服务的路径。

7. `for /f "tokens=1-4 delims=/ " %%a in ('date /t') do (...)`: 这行代码获取当前日期,并将其分解为年、月和日,然后将它们保存到对应的变量中。

8. `for /f "tokens=1-3 delims=: " %%a in ('time /t') do (...)`: 这行代码获取当前时间,并将其分解为小时和分钟,然后将它们保存到对应的变量中。

9. `set timestamp=%year%-%month%-%day% %hour:~-2%:%minute%`: 这行代码将日期和时间变量组合成一个时间戳(格式为 "YYYY-MM-DD HH:MM"),并将其保存到 `timestamp` 变量中。

10. `cd bin`: 这行代码将当前工作目录更改为 EMQX 服务的 "bin" 目录,以便执行后续的命令。

11. `emqx_ctl status | findstr /C:"Node 'emqx@127.0.0.1'" | findstr /C:"is started" >NUL`: 这行代码通过 `emqx_ctl status` 命令检查 EMQX 服务是否正在运行。如果服务正在运行,则输出的结果会包含 "Node 'emqx@127.0.0.1'" 和 "is started" 字符串。

12. `IF "%ERRORLEVEL%"=="0" (...) ELSE (...)`: 这行代码根据上一步的命令执行结果,判断 EMQX 服务的运行状态。如果结果为 0(即服务正在运行),则执行第一个括号中的代码块;否则,执行第二个括号中的代码块。

13. `echo [%timestamp%] EMQX is running normally. >> %OUTPUT_FILE%`: 如果 EMQX 服务正在运行,这行代码会将带有时间戳的信息写入日志文件中,表示服务正常运行。

14. `echo [%timestamp%] EMQX is not running. Restarting... >> %OUTPUT_FILE%`: 如果 EMQX 服务没有运行,这行代码会将带有时间戳的信息写入日志文件中,表示服务未运行,并准备重新启动服务。

15. `start /b cmd /c "%EMQX_PATH%\bin\emqx start"`: 这行代码通过 `start` 命令在后台启动 EMQX 服务。`/b` 参数表示以后台方式运行命令窗口,`/c` 参数表示运行命令并关闭窗口。`"%EMQX_PATH%\bin\emqx start"` 是要执行的命令。

16. `echo [%timestamp%] EMQX has started. >> %OUTPUT_FILE%`: 当 EMQX 服务重新启动后,这行代码会将带有时间戳的信息写入日志文件中,表示服务已经重新启动。

17. `timeout /t 60 > NUL`: 这行代码暂停脚本的执行,等待 60 秒钟。`/t 60` 参数表示等待 60 秒,`> NUL` 表示将输出重定向到空设备,即不显示任何输出。

18. `goto loop`: 这行代码将脚本的执行跳转回 `:loop` 标签处,从而形成一个无限循环,持续监视和管理 EMQX 服务。

总体而言,这个批处理文件会不断检查 EMQX 服务的状态,并根据服务的运行状态记录相关信息到日志文件中。如果服务未运行,它将尝试重新启动服务。然后,它会等待一段时间后再次进行状态检查,以持续监视服务的运行情况。

5.前台运行版本

注意:前台运行版本不输出日志到文件,全部输出到控制台

关闭该黑窗口则程序不再运行

emqx_monitor_keep.bat 文件下载

@echo off
title emqx_monitorset EMQX_PATH=E:\emqx:loop
cd /d "%EMQX_PATH%"REM 获取当前日期时间,并格式化为时间戳
for /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set year=%%aset month=%%bset day=%%c
)
for /f "tokens=1-3 delims=: " %%a in ('time /t') do (set hour=0%%aset minute=%%b
)
set timestamp=%year%-%month%-%day% %hour:~-2%:%minute%cd bin
emqx_ctl status | findstr /C:"Node 'emqx@127.0.0.1'" | findstr /C:"is started" >NUL
IF "%ERRORLEVEL%"=="0" (echo [%timestamp%] EMQX is running normally.
) ELSE (echo [%timestamp%] EMQX is not running. Restarting... REM 结束之前的 EMQX 进程,可以通过 taskkill 命令来实现REM taskkill /f /im beam.smp.exe >NULstart /b cmd /c "%EMQX_PATH%\bin\emqx start"echo [%timestamp%] EMQX has started. REM 如果 EMQX 不直接启动一个新窗口,可以将上面一行修改为以下内容REM call %EMQX_PATH%\emqx start
)timeout /t 60 > NUL
goto loop

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20106.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量化工具使用介绍——Tushare

Tushare ID:497485 今年年初的时候,我和几位小伙伴一起合作打花旗杯,项目和量化交易有关。不可避免地会使用到一些常规的量化工具(尤其是python的第三方库),虽然决赛还没有开始,我们已经确定进入了二十强。…

BigQuant策略做量化真的能赚钱吗?

BigQuant策略做量化可以赚钱,但是是建立在一些前提条件基础之上的。量化策略本身存在的意义就是通过数量化模型建立科学投资体系,获取稳定收益,相比传统投资,其具备纪律性、系统性、及时性、准确性等诸多优势,所以一个…

自己做量化交易软件(45)小白量化实战18--直接使用通达信自编指标公式进行分析绘图和回测

自己做量化交易软件(45)小白量化实战18–直接使用通达信自编指标公式进行分析绘图和回测 小白量化一代提供了Python公式算法模式来写量化程序。 小白量化二代提供了仿通达信公式的模式来写量化程序。 小白量化三代除了仿通达信公式的模式来写量化程序外(见前几篇博客…

自己做量化交易软件(16)用小白通通量化AI框架打造自己的量化平台

最近一段时间&#xff0c;我主要学习python3和tkinter的窗口开发&#xff0c;对tkinter编程逐步了解。 此外&#xff0c;应广大朋友要求&#xff0c;我写了 一本学习python3学习书籍<小白学Python3实战搭建量化投资平台>. <小白学Python3实战搭建量化投资平台>内容…

Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么

目录 Chat GPT是什么 初学者怎么使用Chat GPT 使用Chat GPT需要注意什么 一些简单的prompt示例 Chat GPT是什么 Chat GPT是由OpenAI开发的一种大型语言模型&#xff0c;它基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;架构。GPT是一种基于深度学习的…

从GPT到chatGPT(一):GPT1

GPT1 文章目录 GPT1前言正文模型架构无监督学习有监督学习处理不同特定任务 实验训练细节实验结果 分析预训练层参数转移的影响zero-shot的表现消融实验 总结 前言 GPT1&#xff0c;出自于OpenAI的论文《Improving Language Understanding by Generative Pre-Training》&#…

ChatGPT+MindShow快速制作ppt

一、ChatGPT&MindShow简介 1、什么是ChatGPT? ChatGPT是一种基于自然语言处理和深度学习技术的人工智能语言模型&#xff0c;使得人们可以更加方便地与计算机进行交互&#xff0c;如智能问答等。 2、什么是MindShow? MindShow只需要在网页上登录即可&#xff0c;可以…

玩转ChatGPT:回答审稿人问题

一、写在前面 前段时间一篇时间序列预测的文章返修&#xff0c;还挺幸运的&#xff0c;给了个小修。 不过问题也问得有点刁钻&#xff0c;应该是个行家。 想到手头有小Chat&#xff0c;打算使用TA来辅助我回答审稿人问题。 以下展示仅仅提供一个工作流和思路&#xff0c;具体…

Jina AI 创始人肖涵博士:揭秘 Auto-GPT 喧嚣背后的残酷真相

Auto-GPT 究竟是一个开创性的项目&#xff0c;还是一个被过度炒作的 AI 实验&#xff1f;本文为我们揭开了喧嚣背后的真相&#xff0c;并揭示了 Auto-GPT 不适合实际应用的生产局限性。 背景介绍 这两天&#xff0c;Auto-GPT&#xff0c;一款让最强语言模型 GPT-4 能够自主完成…

两款吾爱破解优秀软件,批量查找文本,图像视频画质增强

批量查找文本 By&#xff1a;tuao 我们在电脑中查找文件的方式有很多&#xff0c;只要知道文件名便能很容易找到 但如果只记得文档中的某个关键词&#xff0c;而忘记文件名称的话&#xff0c;找起来就有些费劲了 这款工具便可以批量的在word、wps、excel、pdf和txt中查找文本…

吾爱破解论坛2021年11月11日,光棍节免费开放注册

点击上方蓝字"优派编程"选择“加为星标”&#xff0c;第一时间关注原创干货 官方原话&#xff1a; 吾爱破解论坛从2008年3月13日建立以来&#xff0c;陪伴众多坛友走过了12年艰辛而辉煌的风雨历程&#xff0c;以带领新手走入密界大门为基础&#xff0c;汇集了一大批爱…

吾爱出品,必属精品

前言 吾爱破解论坛是一个非常老牌的软件技术交流地&#xff0c;虽然经过多次整改&#xff0c;人气不如从前了 但也依旧能找到很多好玩好用的东西&#xff0c;小编不少分享的软件都是在这个论坛找到的 今天又收集了4款吾爱上高评霸榜的小工具&#xff0c;都很实用&#xff01…

txt工具吾爱版

每次在网上复制的文本内容都是乱七八糟的&#xff1f;那么可以配合txt工具来处理&#xff0c;这是由吾爱破解pgzzh用户出品的一款非常实用、绿色小巧的电脑排版工具&#xff0c;不要看该软件大小才几百KB&#xff0c;其功能是非常好用的&#xff0c;主要就是为用户们提供了去除…

吾爱studio3T

根本逻辑讲解&#xff1a;通过注册表更改studio3T试用时间到期的两种方 法 本例逻辑为通过不断重置studio 3t的试用时间达成伪永久&#xff0c;此软件少有永久免费版&#xff0c;如有永久的请在评论区我。 第一种方法 第一步&#xff1a;winr输入 regedit打开注册表 第二步&…

吾爱第二课-去除网页弹窗

目录 WindowsAPI实例1实例2修改主页内置广告1 用到的工具RestoratorFix ResourceProcexpProcmon WindowsAPI API函数提供应用程序所需要的窗口管理、图形设备接口、内存管理等服务功能。这些功能以函数库的形式组织在一起&#xff0c;形成了Windows应用程序编程接口。 A代表A…

python安卓吾爱_申请会员ID:吾爱Python

1、申请ID&#xff1a;吾爱Python 2、个人邮箱&#xff1a;792800132qq.com 3、原创技术文章&#xff1a;通过Python来实现网页的自动登录。 原创内容介绍&#xff1a;通过Python中的selenium库实现网页的自动登录&#xff08;以今日头条为例&#xff09; 第一步&#xff1…

HTML和xml有哪些区别?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言HTML和XML的概述HT…