#!/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