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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM