#!/bin/bash
#时间
TIME=$(date "+%Y-%m-%d %H:%M:%S")
#需要启动并监测服务的路径
JAR_PATH=$(cd $(dirname $0); pwd)
echo "-------${TIME}-------需要启动并监测服务的路径:"${JAR_PATH}
#遍历文件夹下所有的jar包
for JAR in `ls -l ${JAR_PATH}/*/*.jar | awk '{print $9}'`
# 此处可以修改“/*/*”这个地方,修改读取目录位置,当前是读取xx/xx/下面的jar包
do
#jar包名称
JAR_NAME=$(basename $JAR)
#单个jar包地址
echo "--------正在检测jar:"${JAR_NAME}
echo "jar包地址:"${JAR}
#jar包目录
JAR_PARH=$(dirname $JAR)
echo "jar包目录:"${JAR_PARH}
#获取程序运行情况
PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
#判断进程是否已经启动,启动继续下一个检测
if [ -n "$PID" ];then
#抛出提示
echo "$JAR_NAME:正在运行,PID=$PID"
else
#启动服务
exec nohup java -Xms256m -Xmx256m -Xmn200m -Xss256k -jar $JAR >> $JAR_PARH/catalina.out 2>&1 &
#获取PID
PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
echo "启动时PID:${PID}"
#自循环判定是否启动
COUNT=0
while [ -z "$PID" ]
do
#一定时间内服务未启动抛出错误提示并终止启动程序
if (($COUNT == 30));then
#启动失败
echo "$JAR_NAME:$(expr $count \* 10)秒内未启动,请检查!"
break
fi
count=$(($count+1))
#启动过程输出提示
echo "$JAR_NAME 启动中.................."
#时间阻断:10s
sleep 10s
#获取PID
PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
echo "启动后循环PID:${PID}"
done
echo "$JAR_NAME:已经启动成功,PID=$PID"
fi
#换行
echo ""
done