背景
近来在搞springcloud微服务,有服务的注册和发现,即nacos。有网关服务,即spring-gateway。有认证中心服务。还有用户中心服务,文件中心服务,springboot admin等等。部署的时候,这么多服务,一个个启动起来甚是麻烦。由于我的服务都是部署在windows下,所以就想着用windows命令行来统一启动和关闭这些服务。
启动服务
部署目录结构如下:
- config:数据库等的配置。
- jar:各个服务jar包。
- logs:服务的日志。
- nacos:服务注册和发现中心。
话不多说,直接上代码:
chcp 65001
@echo off
taskkill /f /fi "IMAGENAME eq redis*" /im *
taskkill /f /fi "IMAGENAME eq javaw.exe" /im *
e:
rem 启动nacos
cd E:\projects\yyl-system\java\micro-system\release\nacos\bin
start /min shutdown.cmd
timeout /T 5
start /min startup.cmd
timeout /T 5
rem 启动redis
d:
cd D:\Redis
start /b redis-server.exe
rem java服务
e:
cd E:\projects\yyl-system\java\micro-system\release\jar
rem 网关中心-sc-gateway.jar
start "网关" javaw "-Dfile.encoding=utf-8" -jar sc-gateway.jar
timeout /T 5
rem 认证中心-sc-gateway.jar
start "认证中心" javaw "-Dfile.encoding=utf-8" -jar yyl-authorization.jar
timeout /T 5
rem 用户中心-sc-gateway.jar
start "用户中心" javaw "-Dfile.encoding=utf-8" -jar user-center.jar
timeout /T 5
rem 文件中心-sc-gateway.jar
start "文件中心" javaw "-Dfile.encoding=utf-8" -jar file-center.jar
timeout /T 5
rem 后台管理中心-sc-gateway.jar
start "后台管理中心" javaw "-Dfile.encoding=utf-8" -jar sc-admin.jar
pause
命令解析
chcp 65001
改变命令行的编码为utf8。
@echo off
关闭命令输出,如果为on,那么你输出的命令会打印在命令行中。
taskkill /f /fi “IMAGENAME eq redis*” /im *
/f表示强制终止进程。
/fi表示筛选进或筛选出查询的任务。
IMAGENAME eq redis*表示匹配镜像名以redis开头的任务。
/im *image name表示要终止的镜像名,*表示终止所有镜像。
start /min shutdown.cmd
以最小化窗口(/min)启动shutdown.cmd,通常会打开新的窗口。
timeout /T 5
延迟5s执行下一条命令。
start “网关” javaw “-Dfile.encoding=utf-8” -jar sc-gateway.jar
启动sc-gateway.jar服务,“网关”是窗口名。javaw可以隐藏窗口,当然也可以使用java命令。“-Dfile.encoding=urf-8”表示设置编码格式为utf-8。
pause
表示命令执行完后,不关闭窗口,等待下一步操作。如果没有pause,命令执行完后,会自动关闭窗口。
关闭服务
命令跟开启服务差不多
chcp 65001
@echo off
e:
cd E:\projects\yyl-system\java\micro-system\release\nacos\bin
start /b shutdown.cmd
taskkill /F /fi "IMAGENAME eq redis*" /im *
taskkill /F /fi "IMAGENAME eq javaw.exe" /im *
pause
服务启动后