自动化启动脚本(灵活部署)

因为项目的要求,需要用到自动化部署的shell脚本,这里来发篇文章记录一下,方便自己可以码哈哈哈哈!!
在确认使用前要先确认自己的项目是否是lib依赖分离的项目哦,up主是lib/conf/bin三层,当然你们也可以自行修改一下配置里面的路径。如果不会可以先看我的另一片文章,一键打包然后解压bin.zip就可以使用啦!https://www.jianshu.com/p/66b586c9cc36
大概就是这样,这个脚本适用于所有的服务,但是一定要注意一下哈。
yml文件里面要配置一下启动类名的相对路径哦SERVER_MAIN_NAME=com...*.application

#!/bin/bash

#有的时候没有给权限这个一定要加,不然java环境变量会没有配置
source /etc/profile
#表示ENV环境输入(配置中心)
ENV=$1

#BIN_DIR(脚本文件路径)、DEPLOY_DIR(工程路径)、CONF_DIR(配置文件路径)
cd `dirname $0`
BIN_DIR=`pwd`
cd ..
DEPLOY_DIR=`pwd`
CONF_DIR=$DEPLOY_DIR/config
echo $DEPLOY_DIR
PIDS=0
echo $PIDS
#获取SERVER_NAME(服务名)、SERVER_PORT(服务端口)
#这里的配置自己改,sed是为了获取yaml后面的value值如果是properties文件把正则:改成=号就可以用了
#当然如果为了方便可以写个自动检测什么配置文件更改这一段话哈哈。我就不贴出来自己想吧哈
SERVER_NAME=`sed '/ name/!d;s/.*://' config/application.yml | tr -d '\r'`
SERVER_PORT=`sed '/port/!d;s/.*://' config/application.yml | tr -d '\r'`
SERVER_MAIN_NAME=`sed '/SERVER_NAME_MAIN/!d;s/.*://' config/application.yml | tr -d '\r'`
#若未设置服务名,用hostname替代
if [ -z "$SERVER_NAME" ]; then
    SERVER_NAME=`hostname`
fi

#判断服务是否已经在运行
checkpids(){
echo '判断服务是否已经在运行'
PIDS=`ps -ef | grep java | grep "$CONF_DIR" |awk '{print $2}'`
if [ -n "$PIDS" ]; then
   echo "ERROR: The $SERVER_NAME has already started!"
    echo "PID: $PIDS"
    exit 1
fi
}
# exit 0
# 查看端口是否已被占用

if [ -n "$SERVER_PORT" ]; then
echo '查看端口是否已被占用'
    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 has already used!"
        exit 1
    fi
fi

#获取工程jar的lib目录
LIB_DIR=$DEPLOY_DIR/lib
LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "\n" ":"`

# Java配置(系统缺少了显示设备、键盘或鼠标|禁用IPV6|L5so文件路径)
JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djava.library.path=${LIB_DIR}"
# JVM配置(Heap最大值|Heap初始值|Young Generation的heap大小|Perm Generation 的最小值|线程栈大小|禁用FullGC|并发收集|减少mark的时间|防止Memory Fragmention|最大分页大小|get,set 方法转成本地代码|在old generation 在使用了初始化的比例后 concurrent collector 启动收集|在 old generation 在使用了 n% 的比例后 , 启动 concurrent collector)
JAVA_MEM_OPTS=" -server -Xmx2g -Xms1g -Xmn256m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
#禁用JVM的DNS缓存机制
NET_OPTS=" -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0 "

#启动服务(后台运行且不被挂断)
echo -e "启动 $SERVER_NAME ..............\c"
#echo "nohup java -cp $NET_OPTS $JAVA_OPTS $JAVA_MEM_OPTS -classpath $CONF_DIR:$LIB_JARS  $SERVER_MAIN_NAME > /dev/null 2>&1 &"
if [ -z $ENV ]; then
    checkpids
    nohup java $NET_OPTS $JAVA_OPTS $JAVA_MEM_OPTS -classpath $CONF_DIR:$LIB_JARS  $SERVER_MAIN_NAME >/dev/null 2>&1 &
    echo '等待15s'
    sleep 15
    PIDS=`ps -ef | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
    if [[ $PIDS -ne 0 ]]; then
        echo "(pid=$PIDS) [OK]"
        exit 0
    else
        echo "(pid=$PIDS) [Failed]"
        exit 1
    fi

else
    checkpids
    nohup java $NET_OPTS $JAVA_OPTS $JAVA_MEM_OPTS -classpath $CONF_DIR:$LIB_JARS  $SERVER_MAIN_NAME --spring.profiles.active=$ENV > /dev/null 2>&1 &
    PIDS=`ps -ef | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
    if [[ $PIDS -eq 0 ]]; then
        echo "(pid=$PIDS) [Failed]"
        exit 1
    else
        echo "(pid=$PIDS) [OK]"
        exit 0

    fi
fi

用着不错的请给我一个赞哈,里面的jvm相关配置请通过调试后自行修改哦,不然内存溢出了自己看着办。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容