#!/bin/bash
source /etc/profile
ENV_NAME=dev
APP_NAME=服务名
APP_PORT=8888
# 内存 OOM快照 JMX GClog 可自行调节大小
JAVA_OPTS="-Xms256m -Xmx256m \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=heapdump.hprof \
-XX:+PrintGCDateStamps \
-XX:+PrintGCDetails \
-Xloggc:gc.log"
# 应用名 端口 nacos配置中心 地址 profile 连不上配置中心不让启动
APP_ARGS="--spring.application.name=$APP_NAME \
--server.port=$APP_PORT \
--spring.profiles.active=$ENV_NAME \
--spring.cloud.nacos.config.server-addr=nacos地址 \
--spring.cloud.nacos.config.namespace=nacos namespace \
--spring.cloud.nacos.config.username= nacos 用户名\
--spring.cloud.nacos.config.password= nacos 密码\
--spring.cloud.nacos.config.extension-configs[0].dataId=application.yml \ 无继承可删除
--spring.cloud.nacos.config.extension-configs[0].refresh=true \ 无继承可删除
--spring.cloud.nacos.config.extension-configs[1].dataId=$APP_NAME.yml \
--spring.cloud.nacos.config.extension-configs[1].refresh=true \
--spring.main.allow-bean-definition-overriding=true"
# 停服
PIDS=`ps -ef | grep java | grep $APP_NAME.jar |awk '{print $2}'`
if [ -n "$PIDS" ]; then
echo "kill $PIDS"
kill $PIDS
fi
sleep 10
PIDS=`ps -ef | grep java | grep $APP_NAME.jar |awk '{print $2}'`
if [ -n "$PIDS" ]; then
echo "kill -9 $PIDS"
kill -9 $PIDS
fi
# 开socket端口的应用 kill后 socket还会被占用一段时间 这里等端口释放
sleep 10
#启动
nohup java $JAVA_OPTS -jar $APP_NAME.jar $APP_ARGS >/root/logs/$APP_NAME/nohup.log 2>&1 &
#java $JAVA_OPTS -jar $APP_NAME.jar $APP_ARGS
APP_NAME 通常为jar 包名
保存为 .sh文件 服务器上直接执行即可
仿照上图的例子,可解决80%以上的jar包部署流程~