linux用脚本启动springboot,使用shell脚本方式启动springboot的可执行jar

#!/bin/bash

SERVER_NAME='spring-vue'

# jar名称

JAR_NAME='springboot-vue.jar'

cd `dirname $0`

BIN_DIR=`pwd`

cd ..

DEPLOY_DIR=`pwd`

CONF_DIR=$DEPLOY_DIR/config

# SERVER_PORT=`sed '/server.port/!d;s/.*=//' config/application.properties | tr -d '\r'`

# 获取应用的端口号

SERVER_PORT=`sed -nr '/port: [0-9]+/ s/.*port: +([0-9]+).*/\1/p' config/application.yml`

PIDS=`ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'`

if [ "$1" = "status" ]; then

if [ -n "$PIDS" ]; then

echo "The $SERVER_NAME is running...!"

echo "PID: $PIDS"

exit 0

else

echo "The $SERVER_NAME is stopped"

exit 0

fi

fi

if [ -n "$PIDS" ]; then

echo "ERROR: The $SERVER_NAME already started!"

echo "PID: $PIDS"

exit 1

fi

if [ -n "$SERVER_PORT" ]; then

SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`

if [ $SERVER_PORT_COUNT -gt 0 ]; then

echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"

exit 1

fi

fi

LOGS_DIR=$DEPLOY_DIR/logs

if [ ! -d $LOGS_DIR ]; then

mkdir $LOGS_DIR

fi

STDOUT_FILE=$LOGS_DIR/stdout.log

JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "

JAVA_DEBUG_OPTS=""

if [ "$1" = "debug" ]; then

JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "

fi

JAVA_JMX_OPTS=""

if [ "$1" = "jmx" ]; then

JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "

fi

JAVA_MEM_OPTS=""

BITS=`java -version 2>&1 | grep -i 64-bit`

if [ -n "$BITS" ]; then

JAVA_MEM_OPTS=" -server -Xmx512m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "

else

JAVA_MEM_OPTS=" -server -Xms512m -Xmx512m -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "

fi

CONFIG_FILES=" -Dlogging.path=$LOGS_DIR -Dlogging.config=$CONF_DIR/log4j2.xml -Dspring.config.location=$CONF_DIR/application.properties "

echo -e "Starting the $SERVER_NAME ..."

nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS $CONFIG_FILES -jar $DEPLOY_DIR/lib/$JAR_NAME > $STDOUT_FILE 2>&1 &

COUNT=0

while [ $COUNT -lt 1 ]; do

echo -e ".\c"

sleep 1

if [ -n "$SERVER_PORT" ]; then

COUNT=`netstat -an | grep $SERVER_PORT | wc -l`

else

COUNT=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`

fi

if [ $COUNT -gt 0 ]; then

break

fi

done

echo "OK!"

PIDS=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`

echo "PID: $PIDS"

echo "STDOUT: $STDOUT_FILE"

脚本用例:

# 启动应用

./start.sh

# 以debug方式启动

./start debug

# 启动任务并开启jmx监控

./start jmx

# 获取当前的运行状态

./start status

停止脚本:stop.sh

#!/bin/bash

cd `dirname $0`

BIN_DIR=`pwd`

cd ..

DEPLOY_DIR=`pwd`

CONF_DIR=$DEPLOY_DIR/config

SERVER_NAME=$DEPLOY_DIR

PIDS=`ps -ef | grep java | grep "$CONF_DIR" |awk '{print $2}'`

if [ -z "$PIDS" ]; then

echo "ERROR: The $SERVER_NAME does not started!"

exit 1

fi

if [ "$1" != "skip" ]; then

$BIN_DIR/dump.sh

fi

echo -e "Stopping the $SERVER_NAME ...\c"

for PID in $PIDS ; do

kill $PID > /dev/null 2>&1

done

COUNT=0

while [ $COUNT -lt 1 ]; do

echo -e ".\c"

sleep 1

COUNT=1

for PID in $PIDS ; do

PID_EXIST=`ps -f -p $PID | grep java`

if [ -n "$PID_EXIST" ]; then

COUNT=0

break

fi

done

done

echo "OK!"

echo "PID: $PIDS"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值