Shell脚本部署jar包

Linux 下部署 jar的脚本,以及一些采用的设置参数。

1. 目录包

"脚本"   "配置"   "包"   "日志"
 bin     conf      lib     logo

"给启动权限"
chmod a+x startup.sh 

"查看端口是否可用"
netstat -anp|grep 3306

"看日志"
tail -fn 200 **.log

2. startup.sh(启动脚本)

#!/bin/bash

## confirm app dir.
DIR=$(cd `dirname $0`; cd ..; pwd)

## confirm conf dir.
CONF=$DIR/conf

## confirm lib.
JAR=$DIR/lib/spax-ec-pay-service-1.0.0.jar

## profile
PROFILE=test

## jvm配置参数
JVM="-Xms1024m -Xmx1024m -Xmn512m -Xss256k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:-UseAdaptiveSizePolicy -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -XX:+UseConcMarkSweepGC -server"

## SpringBoot 2.0 版本以上 -Dspring.config.additional-location 加载外部配置文件,以下的用 -Dspring.config.location 
nohup java ${JVM} -jar $JAR -Dspring.config.additional-location=$CONF/ -Dspring.profiles.active=$PROFILE > /dev/null 2>&1 &

3. shutdown.sh(关闭脚本)

#!/bin/bash

## indexOf function.
function indexOf(){
  arr=$1

  local index=1
  local e

  for e in ${arr[*]}; do
    if [ $2 = "$e" ]; then
      return $index
    else
      (( index= index+1 ))
    fi
  done
  return 0
}

JPS=`/opt/java/jdk1.8/bin/jps`

attr=($JPS)

indexOf "${attr[*]}" **名称.jar

ret=$?

if [ $ret != 0 ]; then
  (( ret=$ret-2 ))
  process=${attr[$ret]}
  echo 'kill process '$process

  kill -9 $process
fi

echo "finish stop!"

4. PS 查询 pid

#!/bin/bash

JARFILE='名称.jar'
echo $JARFILE
ID=`ps -ef | grep "$JARFILE" | grep -v "grep" | awk '{print $2}'`
echo $ID
for id in $ID
do
kill -9 $id
echo "kill process $id"
echo "finish stop!"

5. restart.sh(重新启动)

#!/bin/bash

sh shutdown.sh

sh startup.sh