前言
不多解释命令,一看就懂,如下配置 bat 文件即可
- 需要知道什么是
bat
文件,百度百科地址:什么是bat - 需要什么是
shell
脚本,百度百科地址:什么是shell脚本
之后会另写一篇bat脚本命令大全,看心情把,就这样
一,windows10 创建start.bat文件
二,windows10 以文本编辑打开文件
编辑如下命令
@echo off %1 mshta vbscript:createobject("wscript.shell").run("%~s0 ::",0,false)(window.close)&&exit java -jar d:\test\test.jar > d:\test\log\server.log 2>&1 & exit
- 创建shell 对象,判断运行否则关闭窗口;
- 运行jar 打印日志到指定目录
- 退出窗口
- 双击运行
三,windows10 指定配置文件,配置jvm 环境
编辑如下命令
@echo off set appname=monitor-admin echo start %appname% service set java_opts=-xms512m -xmx2048m -xx:metaspacesize=256m -xx:maxmetaspacesize=512m -xx:+heapdumponoutofmemoryerror ^ -xx:+printgcdatestamps -xx:+printgcdetails -xx:newratio=1 -xx:survivorratio=30 -xx:+useparallelgc -xx:+useparalleloldgc java -jar %java_opts% ./bin/%appname%.jar --spring.config.location=./conf/application.yml,./conf/application-druid.yml > ./log/server.log 2>&1 & echo start success close window pause
- 这里的
conf
文件夹是同目录级别下的yml 文件,也就是说设置外部的配置文件生效,让jar内部的yml失效,这样做的好处是不用更改配置重新部署,坏处就是配置信息都暴露出来让别人一下都看到了 - 双击运行
四,windows10 创建stop.bat 关闭特定端口的java程序
@echo off set port=10011 echo start kill app server, by %port% for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /f /pid %%m echo end pause
- 双击运行
五,windows10 创建restart.bat ,重启jar包
@echo off %1 mshta vbscript:createobject("wscript.shell").run("%~s0 ::",0,false)(window.close)&&exit set port=8080 for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /f /pid %%m & set java_opts=-xms256m -xmx1024m -xx:metaspacesize=128m -xx:maxmetaspacesize=512m java -jar d:\test\test.jar --spring.config.location=./conf/application.yml > d:\test\log\server.log 2>&1 & exit
六,linux下创建 start.sh 文件
将文件变为可执行文件
chmod 777 start.sh
编辑文件内容
将 appname
变量值,改为自己的jar 名称即可
#!/bin/sh app_home="$(cd "$(dirname "$bash_source")" && pwd)" appname=test jar_path=$(find "$app_home"/bin -name "${appname}*.jar") jar_name=${jar_path##*/} app_pid="app.pid" # jvm参数 jvm_opts="-dname=$jar_name -duser.timezone=asia/shanghai -xms512m -xmx2048m -xx:metaspacesize=256m -xx:maxmetaspacesize=512m -xx:+heapdumponoutofmemoryerror \ -xx:+printgcdatestamps -xx:+printgcdetails -xx:newratio=1 -xx:survivorratio=30 -xx:+useparallelgc -xx:+useparalleloldgc" pid="" query() { pid=$(ps -ef | grep java | grep "$app_home"/bin/$appname | grep -v grep | awk '{print $2}') } echo "start $jar_name ..." cd "$app_home" || exit query if [ x"$pid" != x"" ]; then echo "$appname is running on pid : ${pid}" echo "${pid}" >$app_pid else nohup java "$jvm_opts" -jar "$jar_path" --spring.config.location=./conf/application.yml,./conf/application-druid.yml >/dev/null 2>&1 & echo "start running..." sleep 3 query echo "${pid}" >$app_pid echo "start $jar_name success on pid: ${pid}" fi
执行文件
./start.sh
七,linux下创建 stop.sh 文件
同上命令,不多撰述,打字费键盘,主要是懒
#!/bin/sh app_home=$(cd "$(dirname "${bash_source[0]}")" && pwd) appname=test pid="" query() { pid=$(ps -ef | grep java | grep "$app_home"/bin/$appname | grep -v grep | awk '{print $2}') } echo "stop $appname" query if [ x"$pid" != x"" ]; then kill -term "$pid" echo "$appname (pid:$pid) exiting..." while [ x"$pid" != x"" ]; do sleep 1 query done echo "$appname exited." else echo "$appname already stopped." fi
八,linux下创建 restart.sh 文件
同上命令,不多撰述,打字费键盘,主要是懒
#!/bin/sh app_home="$(cd "$(dirname "$bash_source")" && pwd)" cd "$app_home" || exit sh stop.sh sleep 2 sh start.sh
九,总结
windows
创建文件bat
,linux
需要变为可执行文件,创建sh
文件- 后台启动jar包,输出日志
- 通过端口杀进程,停止运行jar包
- 学习bat脚本,shell脚本命令
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论