何亦冷

导航

SpringBoot应用启动并查看日志的Shell脚本

#!/bin/bash

############################################################
# 日期:2020-02-10
# 作者:何鹏举
# 说明:根据传入参数的jar包名称,重启SpringBoot应用并查看日志
############################################################
if [[ -z $1 ]]; then
  echo "Usage: ./restartApp.sh jarName [jenkins]"
  echo "    第二个参数用于jenkins自动打包时, 不自动查看日志"
  exit 1
fi

# 变量名字
scriptName=$0
jarName=$1
appName=${jarName%.*}
logFile=$HOME/app/log/$appName/$appName.log

echo "查看日志命令: tail -f "$logFile

# 找到进程号并关闭应用, 注意需要去掉grep命令和脚本本身命令的进程
pid=`ps -ef | grep $jarName | grep -v grep | grep -v $scriptName | awk '{print $2}'`
if [[ -n $pid ]]; then
  echo "找到应用"$appName"的进程号:"$pid",尝试正常停止应用"
  kill $pid
  sleep 5
fi

pid=`ps -ef | grep $jarName | grep -v grep | grep -v $scriptName | awk '{print $2}'`
if [[ -n $pid ]]; then
  echo "5秒内没有正常停止应用:"$appName", 进程号:"$pid",下面进行强制停止"
  kill -9 $pid
fi

# 启动应用
nohup java  -jar -Xms256M -Xmx512M $jarName --eureka.instance.ip-address=101.132.97.183 >> /dev/null 2>&1 &
echo "正在启动应用..."


# jenkins启动的时候不查看日志(简单判断, 第二个参数不为空则是jenkins启动的)
if [[ -n $2 ]]; then
  echo "jenkins启动, 不自动查看日志"
  exit 0
fi

# 查看日志(日志文件不存在(首次启动),则休息下再tail)
if [[ ! -f $logFile ]]; then
  sleep 2
fi
tail -f $logFile

 

posted on 2020-02-11 23:42  何亦冷  阅读(2567)  评论(0编辑  收藏  举报