#!/bin/bash
#设置语言
export LANG="zh_CN.gbk"
#项目端口
PORT=8888
#项目包名
PROJECT_NAME="test.jar"
#项目包地址
PROJECT_JAR_ADDRESS="/package/jar/test"
#日志名(标准输出)
LOG_NAME="/package/logs/test/test-logs-%Y-%m-%d.log"
#错误日志
ERROR_LOG_NAME="/package/logs/test/test-logs-error-%Y-%m-%d.log"
function killproject()
{
#多个项目jar包名一致了,所以并没有用 ps -ef | grep jar包名 来查进程id,而是通过端口号来查的
project_pid=$(netstat -lnp | grep ${PORT}|awk '{print $7}'|cut -d/ -f1)
if [ $project_pid > 0 ];then
echo "test服务已经启动了,开始关闭test服务,项目pid为: $project_pid "
kill -9 $(netstat -lnp | grep ${PORT} |awk '{print $7}'|cut -d/ -f1)
echo '项目关闭成功,开始重启项目。。。'
else
echo "项目未启动,直接启动"
fi
}
function start_project()
{
source /etc/profile
echo '正在启动test服务。。。'
cd ${PROJECT_JAR_ADDRESS}
nohup java -server -Xms256m -Xmx300m -XX:-UseGCOverheadLimit -Dfile.encoding=utf-8 -jar ${PROJECT_NAME} | /usr/sbin/cronolog ${LOG_NAME} &
#下面是自定义配置文件
#nohup java -server -Xms512m -Xmx512m -XX:-UseGCOverheadLimit -Dfile.encoding=utf-8 -Dspring.profiles.active=dev -jar ${PROJECT_NAME} >/dev/null 2>&1 &
}
killproject
start_project
i=0;
while true ;do
i=0;
check_pid=$(netstat -lnp | grep ${PORT}|awk '{print $7}'|cut -d/ -f1)
if [ $check_pid > 0 ];then
echo "启动test服务成功, pid = : $check_pid "
break;
else
if [ $i -le 10 ];then
echo "test服务正在启动中。。。"
let i+=1;
sleep 5s;
else
echo "启动test服务失败"
break;
fi
fi
done