#!/bin/bash
JAVA_OPTS="-Xms512m -Xmx512m"
API_NAME=auto-test-platform
JAR_NAME=${API_NAME}\.jar
# 使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [[start|stop|restart|status]]"
exit 1
}
# 检查程序是否在运行
is_exist() {
pid=$(ps -ef | grep ${JAR_NAME} | grep -v grep | awk '{print $2}')
#如果不存在返回1,存在返回0
if [[ -z "${pid}" ]]; then
return 1
else
return 0
fi
}
# 启动方法
start() {
is_exist
if [[ $? -eq "0" ]]; then
echo ">>> ${JAR_NAME} is already running <<<"
else
echo "nohup java ${JAVA_OPTS} -jar ${JAR_NAME} > run.log 2>&1 &"
nohup java ${JAVA_OPTS} -jar ${JAR_NAME} >run.log 2>&1 &
echo -n "doing"
for i in {1..30}; do
start_log=$(cat run.log | grep "Tomcat started on port" | wc -l)
if [[ ${start_log} == 1 ]]; then
echo ""
echo ">>> start ${JAR_NAME} successed <<<"
return
else
echo -n "."
sleep 1
fi
done
echo ""
echo ">>> start ${JAR_NAME} timeout, get detail in run.log <<<"
fi
}
# 停止方法
stop() {
is_exist
if [[ ! ${pid} -gt 0 ]]; then
echo ">>> ${JAR_NAME} is not running <<<"
return
fi
echo ">>> begin to kill process at ${pid} <<<"
kill -15 ${pid}
sleep 2
is_exist
if [[ $? -eq "0" ]]; then
echo ">>> use kill -15 failed, begin kill -9 ${pid} <<<"
kill -9 ${pid}
sleep 2
echo ">>> ${JAR_NAME} process stopped: kill -9 <<<"
else
echo ">>> ${JAR_NAME} process stopped: kill -15 <<<"
fi
}
# 输出运行状态
status() {
is_exist
if [[ $? -eq "0" ]]; then
echo ">>> ${JAR_NAME} is running at ${pid} <<<"
echo $(ps -ef | grep ${JAR_NAME} | grep -v grep)
else
echo ">>> ${JAR_NAME} is not running <<<"
fi
}
# 重启
restart() {
stop
start
}
# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
exit 0