IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 2.单节点高可用-windows篇bat脚本 -> 正文阅读

[开发工具]2.单节点高可用-windows篇bat脚本

背景介绍

有了windows任务计划之后,可以实现开机执行脚本+定时执行脚本了,那这个脚本该怎么写呢?总的套路是1拖n的策略。所谓的1就是群起脚本,通过监控每个部件提供的服务(比如监听端口),来监控是否还活着,如果活着就输出一句日志,如果宕机了则调用组件的启动脚本进行重启。在这个群起脚本中,可以开头获得管理员权限,强化一下执行时的权限。n代表的是整体产品的组件拆分,比如我司做的平台可以拆分为5个组件,对应5个启动脚本。

解决方案

群起脚本,分为几个部分:获取权限部分,配置部分,主函数部分,子函数部分。测活的手段也是检测是否监听。

@echo off
rem 设置控制台输出为utf-8
chcp 65001
title "一键群起"

rem exec执行引擎相关参数设置,注意,日志的目录需要提前创建好
set srvExecPort=22973
set srvExecLog=log_exec.txt

rem 算法中间件启动
set srvAlgorithmPort=22972
set srvAlgorithmLog=python_exec.txt

rem web后端启动配置
set srvWebJavaPort=22971
set srvWebJavaLog=web_java.txt

rem MYSQL启动配置
set srvMysqlPort=3306
set srvMysqlLog=mysql_log.txt


if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
echo 当前运行路径是:%CD%
echo 已获取管理员权限





echo --------执行平台一键启动脚本--------
call:checkAliveAndStart
echo --------执行平台一键启动脚本执行完毕--------
goto:eof



:checkAliveAndStart
	echo 检测mysql是否启动
	
	echo 检测vue是否启动
	
	echo 检测web后端是否启动
	 
	echo 检测算法中间件是否启动
 	call:checkAlgorithmMWAliveAndStart
	echo 检测工作流执行引擎是否启动
 
 
	goto:eof

rem python 算法中间件	
:checkAlgorithmMWAliveAndStart
	echo -------------------------------------------------------------------------------------------------start >> %srvAlgorithmLog%
	echo [%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%] 开始检查算法中间件的运行情况 ...... >>%srvAlgorithmLog%
	set state=0
	for /f "tokens=3 delims=: " %%a in ('netstat -an') do if "%%a"=="%srvAlgorithmPort%" set state=1
	
	if %state%==1 (
		echo [%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%] 算法中间件正常运行!>> %srvAlgorithmLog%
	)else if not %state%==1 (
		echo [%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%] 算法中间件未启动!    >> %srvAlgorithmLog%
		echo [%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%] 尝试启动算法中间件 ...... >> %srvAlgorithmLog%
		rem start是在新窗口启动 call是在本窗口流式启动
		start startEdgeMind_algorithm_python.bat
		rem 给10s的启动时间
		choice /t 2 /d y /n >nul
		for /f "tokens=3 delims=: " %%b in ('netstat -an') do (
			if "%%b"=="%srvAlgorithmPort%" (
				echo [%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%] 算法中间件启动成功!>> %srvAlgorithmLog%
			)
		)
	)
	set state=
	echo -------------------------------------------------------------------------------------------------end >> %srvAlgorithmLog%
	goto:eof

部件的启动脚本的最终形态是带参数可以实现启动,关闭,重启。这里只用到了启动。

@echo off
chcp 65001
title "执行引擎启动终端"
java -DFile.encoding=utf-8 -jar D:\codeRepo\EdgeMindPlatform\EdgeMind-exec\target\EdgeMind-exec-0.0.1-SNAPSHOT.jar

参考资料

https://www.jb51.net/article/193692.htm 批处理文件如何获得管理员权限,针对一些需要管理员权限才能运行的程序

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 12:07:34  更:2021-09-03 12:08:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 7:52:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码