1. 启动 HelloWorldDemo-1.0-SNAPSHOT.jar 的脚本
start.sh
export HELLO_port=8866
HELLO_pid=`ps -ef | grep -w $HELLO | grep -v "grep" | awk '{print $2}'`
if [ "$HELLO_pid" == "" ]; then
echo "----------------HelloWorldDemo 开始启动----------"
nohup java -jar -Xms50m -Xmx100m $HELLO >/dev/null 2>&1 &
HELLO_pid=`lsof -i:$HELLO_port|grep "LISTEN"|awk '{print $2}'`
until [ -n "$HELLO_pid" ]
do
HELLO_pid=`lsof -i:$HELLO_port|grep "LISTEN"|awk '{print $2}'`
done
echo "HELLO jar pid is $HELLO_pid"
echo "-----------HELLO jar启动成功--------"
else
echo "----------------HelloWorldDemo 正在运行请先停止----------"
fi
2. 停止 HelloWorldDemo-1.0-SNAPSHOT.jar 的脚本
stop.sh
export HELLO=HelloWorldDemo-1.0-SNAPSHOT.jar
export HELLO_port=8866
HELLO_pid=`ps -ef | grep -w $HELLO | grep -v "grep" | awk '{print $2}'`
if [ "$HELLO_pid" == "" ]; then
echo "===hello pid为$HELLO_pid ,该进程不存在或已经被停止成功!"
else
kill -9 $HELLO_pid
echo "===hello pid为$HELLO_pid ,已经被停止成功!"
fi
3. 重启脚本 (包含停止,启动,打印log)
jarName='xun.jar'
jarPath='/springbootjar/xun.jar'
jarPathLog='/springbootjar/xun.log'
max_loops=20
loops=0
echo ">>>>>>> 本次重启的应用: $jarName <<<<<<<"
stopApp(){
if [ ! -f "$jarName" ]; then
echo "===文件不存在,启动失败!!!==="
exit
else
pid=$( ps -ef |grep $jarName |grep 'java -jar'|grep -v grep|awk '{print $2}')
if [ $pid ]
then
echo " 找到$jarName 进程号: $pid,正在强制停止"
kill -9 $pid
echo "$jar 已停止"
else
echo "$jarName 未在运行"
fi
fi
}
startApp(){
echo "程序 $jarName 正在重启..."
nohup java -jar $jarPath > $jarPathLog 2>&1 &
while [ $loops -lt $max_loops ]; do
pid=$(pgrep -f "$jarPath")
if [ -n "$pid" ]; then
echo "$jarName 已启动 , PID: $pid"
break
else
echo "$jarName 启动中... "
fi
loops=$((loops+1))
sleep 3
done
pidstart=$( ps -ef |grep $jarName |grep 'java -jar'|grep -v grep|awk '{print $2}')
if [ $pidstart ]
then
echo ""
else
echo "$jarName 1分钟内未启动成功,可能失败"
fi
}
printLog(){
tail -f -n 0 $jarPathLog | while read line; do
echo "$line"
if [[ "$line" == *"Tomcat started on port"* ]]; then
echo "启动成功"
pkill -P $$ tail
exit
fi
done
}
stopApp
sleep 1
startApp
sleep 2
printLog