Windows下批量启动/关闭java程序
最近公司要将一批微服务部署到windows server上,对于微服务项目来说,一次要部署多个jar包是让人崩溃的,所以这里想做一个批量运行\停止的脚本。
批量启动:
- 在
cmd下,java -jar ####.jar运行后窗口不能关闭,但是有多个jar包,则会开启多个cmd窗口,非常难受。 - 在
cmd下,javaw -jar ####.jar运行后窗口可以关,但如果有多个jar,就回存在进程中有许多相同的javaw进程,无法区分是哪个jar,很难去关闭特定某个jar的进程。
如何解决
- 为了解决多个
cmd窗口的问题;通过bat文件批量执行jar文件,每个包用start javaw -jar ####.jar来运行。 - 为了解决进程难以区分问题;通过复制
javaw.exe为对应jar包的文件名称来执行jar包,比如eureka.jar,复制javaw.exe为eureka.exe,然后start eureka -jar eureka.jar,这样进程中就是eureka。 - 如果
jar之间有执行依赖,则通过ping来给前一个jar提供执行时间。
案例如下
@echo off
set javaw="%JAVA_HOME%\bin\javaw.exe"
echo ******start qis-eureka.jar******
set eureka="%JAVA_HOME%\bin\eureka.exe"
rem 复制文件
if not exist %eureka% (
copy %javaw% %eureka%
)
start eureka -jar qis-eureka-0.0.1.jar
rem 等待8秒,ping一次1秒
ping -n 8 127.0.0.1>nul
echo ******start qis-getway.jar******
set getway="%JAVA_HOME%\bin\getway.exe"
if not exist %getway% (
copy %javaw% %getway%
)
start getway -jar qis-getway-0.0.1.jar
exit
批量停止
在上面我们知道为每个jar制定了进程的名称,于是,停止的脚本如下:
@echo off
taskkill /f /t /im eureka.exe
taskkill /f /t /im getway.exe
exit