此模板已打包上传,可直接点击下载
产品包目录结构
Linux脚本
- 替换
source/application.jar
为你的jar; - 修改
start.sh
中第3行的APP_NAME为你的jar名称; - 修改
stop.sh
中第2行的APP_NAME为你的jar名称; - Linux下执行
chmod +x *.sh
给sh脚本赋予执行权限; - Linux下执行
sh ./unZipJDK.sh
解压JDK; - Linux下执行
sh ./start.sh
; - Linux下执行sh tail -f nohup…(省略)可查看控制台输出日志
注意:以下Linux脚本文件需要为Unix兼容格式(LF)
(区别:Windows默认CRLF回车换行符为\r\n,Unix的LF格式回车换行符为\n)
启动脚本start.sh
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
APP_NAME="application.jar"
APP_PORT=`sed -n '/^port/p' config/port.config | awk -F'=' '{print $2}'`
JMX_PORT=`sed -n '/^jmx-port/p' config/port.config | awk -F'=' '{print $2}'`
DUMP_DIR=$DIR/dump
if [ ! -d "${DUMP_DIR}" ]; then
mkdir -vp ${DUMP_DIR}
fi
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx1g -Duser.timezone=Asia/shanghai"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC"
JAVA_OPT="${JAVA_OPT} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DUMP_DIR}/java_error_in_application_%p.hprof"
if [ ! "0$JMX_PORT" -gt "0" ]
then
echo "没有指定 JMX 远程端口,将无法进行远程监控"
else
echo "指定JMX端口为: $JMX_PORT"
echo "尝试获取本机 ip 地址"
IP_ADDR='127.0.0.1'
IP_ADDR=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' | head -1)
echo "成功获取本机 ip 地址: $IP_ADDR"
JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=${JMX_PORT} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=${IP_ADDR}"
fi
echo "程序运行参数为: ${JAVA_OPT}"
echo "程序运行端口为: ${APP_PORT}"
nohup jdk1.8.130/bin/java ${JAVA_OPT} -jar source/${APP_NAME} --server.port=${APP_PORT} > nohup_${APP_NAME}_${APP_PORT}.out 2>&1 &
停止脚本stop.sh
#!/bin/bash
APP_NAME="application.jar"
# 输入参数为要关闭Application的访问端口号
if [ -z "$1" ]
then
pid=`ps ax |grep -i ${APP_NAME} |grep java | grep -v grep | awk '{print $1}'`
else
pid=`ps ax |grep -i ${APP_NAME} |grep java | grep -i 'server.port='''${1}''''| grep -v grep | awk '{print $1}'`
fi
if [ -z "$pid" ] ; then
echo "application is not running."
exit 0;
fi
echo "application(${pid}) is running."
echo "Send shutdown request to application(${pid})....."
kill -9 ${pid}
echo "Shutdown application(${pid}) success."
解压JDK脚本unZipJDK.sh
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ ! -d $DIR/jdk1.8.311 ];then
echo "正在解压jdk..."
tar -zxf source/jdk-8u311-linux-x64.tar.gz -C $DIR
echo "jdk解压完成"
else
echo "已存在目录jdk1.8.311, 请勿重复解压JDK, 退出本脚本..."
fi
端口配置port.config
#app port
port=8080
#JMX port
jmx-port=
Windows脚本
使用说明:
- 修改
run.bat
中JAVA_JAR
为你的jar名称 - 控制台启动:双击
run.bat
文件 - 后台启动:命令行执行
run.bat start
- 关闭程序:命令行执行
run.bat stop
启停脚本run.bat
title Application(Java)
@echo off
rem ===========================================================
set JAVA_HOME_TEMP=source\jdk1.8.0_311
set JAVA_OPTS=-Xms4g -Xmx4g -Dfile.encoding=utf-8
set JAVA_JAR=source\application.jar
set PORT=9999
set LAUNCH_ARGS=--server.port=%PORT%
rem ===========================================================
set CLASSPATH_TEMP=".;%JAVA_HOME_TEMP%\bin;%JAVA_HOME_TEMP%\lib\dt.jar;%JAVA_HOME_TEMP%\lib\tools.jar"
rem 接收传入参数
if "%1"=="" goto doStartConsole
if "%1"=="start" goto doStart
if "%1"=="stop" goto doShutdown
:doStartConsole
set CMD=startConsole
goto doExe
:doStart
set CMD=start
goto doExe
:doShutdown
set CMD=stop
goto doExe
:doExe
echo ===========================================================
echo Java Home: %JAVA_HOME_TEMP%
echo JVM Parameters:%JAVA_OPTS:"=%
echo Start Jar: %JAVA_JAR:"=%
echo Start Parameters: %LAUNCH_ARGS:"=%
echo Execute Command: %CMD%
echo ===========================================================
echo.
if "%CMD%" == "startConsole" (
%JAVA_HOME_TEMP%\bin\java %JAVA_OPTS% -classpath %CLASSPATH_TEMP% -server -jar %JAVA_JAR% %LAUNCH_ARGS%
) else if "%CMD%" == "start" (
START %TITLE% /min %JAVA_HOME_TEMP%\bin\javaw %JAVA_OPTS% -classpath %CLASSPATH_TEMP% -server -jar %JAVA_JAR% %LAUNCH_ARGS%
) else if "%CMD%" == "stop" (
for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%PORT%"') do (
if "%%e%" == "" (
set pid=%%d
) else (
set pid=%%e
)
echo %pid%
taskkill /f /pid %pid%
)
)
goto end
:notParam
echo not params
:end
if "%CMD%" == "start" (
echo 已后台启动!
)
if "%CMD%" == "stop" (
echo 已停止!
)
if "%CMD%" == "startConsole" (
pause
)
【前端-开发环境】使用NVM实现不同nodejs版本的自由切换(NVM完整安装使用手册)
【前端-NPM私服】内网使用verdaccio搭建私有npm服务器
【前端-IE兼容】Win10和Win11使用Edge调试前端兼容IE6、IE7、IE8、IE9、IE10、IE11问题
【工具-Nginx】Nginx高性能通用配置文件-注释版-支持防刷限流、可控高并发、HTTP2、防XSS、Gzip、OCSP Stapling、负载、SSL
【工具-WireShark】网络HTTP抓包使用教程
【后端-maven打包】通过profile标签解决同时打jar包 war包需求
【工具-Flyway】优雅的数据库版本控制方式,无需每个版本发布数据库变动脚本
【后端-SpringCache】基于Spring Cache封装一个能够批量操作的Redis缓存记录下踩坑历程(pipeline或mget封装)
【后端-SkyWalking】SkyWalking前后端开发环境搭建详细教程步骤-6.x/7.x/8.x版本通用-插件二次开发利器(一)
✨欢迎为耿直少年点赞、关注、收藏!!!
👇👇👇