常见微服务启动脚本

发布时间:2024年01月19日


前言:我们在linux机器部署微服务时很少通过java -jar的方式取启动一个服务,大多数都是流水线自动启停,所以微服务的脚本就很重要。因此我们来看一下一个常见的启动脚本都包含哪些内容。

1.脚本内容

ADATE=`date +%Y%m%d%H%M%S`
APP_NAME=$1
JAR_NAME=$2
ARGS=$3
APP_HOME=/data/app/$1

if [ ! -d "$APP_HOME/logs" ];then
        mkdir $APP_HOME/logs
fi

cd $APP_HOME

LOG_PATH=$APP_HOME/logs/root.log
GC_LOG_PATH=$APP_HOME/logs/gc-$APP_NAME-$ADATE.log
JVM_OPTS="-Dname=$APP_NAME $ARGS -Xms384M -Xmx384M -XX:PermSize=128M -XX:MaxPermSize=128M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -Xloggc:$GC_LOG_PATH -XX:+PrintGCDetails"

pwd
echo $LOG_PATH
JAR_FILE=$APP_HOME/$JAR_NAME
pid=0
start(){
        checkpid
        if [ ! -n "$pid" ]; then
                nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 $JVM_OPTS $JAR_FILE --spring.profiles.active=dev > $LOG_PATH  2>&1 &
                echo "---------------------------------"
                echo "启动完成,按CTRL+C退出日志界面即退出>>>>>"
                echo "---------------------------------"
                sleep 2s
                #tail -f $LOG_PATH
        else
                echo "$APP_NAME is runing PID: $pid"
        fi
}


status(){
        checkpid
        if [ ! -n "$pid" ]; then
                echo "$APP_NAME not runing"
        else
                echo "$APP_NAME runing PID: $pid"
        fi
}

checkpid(){
        pid=`ps -ef |grep $JAR_FILE |grep -v grep |awk '{print $2}'`
}

stop(){
        checkpid
        if [ ! -n "$pid" ]; then
                echo "$APP_NAME not runing"
        else
                echo "$APP_NAME stop..."
                kill -9 $pid
        fi
}

restart(){
        stop
        sleep 1s
        start
}
restart


2.脚本解释

2.1启动脚本传参

参数解释:
APP_NAME=$1
JAR_NAME=$2
ARGS=$3
APP_HOME=/data/app/$1
说明运行脚本需要接受三个参数。
$1:应用名(app的jar包所在目录名)
$2:app打包后的jar名
$3:jar启动时指定的参数,例如:--spring.profiles.active=dev

2.2路径及启动参数

参数解释:
1.LOG_PATH=$APP_HOME/logs/root.log
$APP_HOME 取值第一部分所以最终 LOG_PATH=/data/app/aaService/logs/root.log(假设服务应用名aaService)
2.GC_LOG_PATH=$APP_HOME/logs/gc-$APP_NAME-$ADATE.log
同理,GC_LOG_PATH=/data/app/aaService/logs/gc-aaService-$ADATE.log(假设服务应用名aaService,$ADATE去当前系统时间)
3.JVM_OPTS:启动参数

2.3启动

nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006   --spring.profiles.active=dev 
这条命令拆开看
1.-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006
远程debug断点:可以在idea上远程debug服务器上的程序
2.--spring.profiles.active=dev  
指定运行后使用什么后缀的配置文件,也可以理解命名空间
3.java -jar $JVM_OPTS $JAR_FILE
$JVM_OPTS:jar包启动的系统参数
$JAR_FILE:指定jar包所在的路径
文章来源:https://blog.csdn.net/qq_45003354/article/details/135701121
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。