#!/bin/sh
port=81 #定义变量等号左右不能有空格
jar_name=/home/jar/love-0.0.1-SNAPSHOT.jar
LOG_FILE=./log.log
yml=" "
# yml=" --spring.config.location=./application-test.yml " #用默认配置 可注释以下不需要修改
#运行脚本提示信息
tips(){
echo "-------------------------------------"
echo ""
echo "项目端口: ${port}"
echo "项目地址: ${jar_name}"
echo ""
echo "你可以使用如下参数进行操作"
echo "-status -查看当前项目运行状态"
echo "-start -启动当前项目"
echo "-stop -停止当前项目"
echo "-restart -重启当前项目"
echo ""
echo "-------------------------------------"
}
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
#查看状态
status(){
#查询端口的PID {print $7}-取出打印的第七个值
#判断端口是否被占用
if [ -z "${pid}" ];then
echo "没有项目在运行"
else
echo "项目正在运行中"
fi
}
#启动项目
start(){
if [ -z "${pid}" ];then
echo "正在启动......"
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar ${jar_name} ${yml} > $LOG_FILE 2>&1 &
#实时查看启动日志(此处正在想办法启动成功后退出)
tail -f $LOG_FILE
#输出启动成功(上面的查看日志没有退出,所以执行不了,可以去掉)
echo "启动完成"
else
echo "项目运行中或端口已被占用"
fi
}
#停止项目
stop(){
if [ -z "${pid}" ];then
echo "没有项目在运行,请先启动"
else
kill -9 $pid
echo "已杀死端口为 ${port} 的应用"
fi
}
#重启项目
restart(){
echo "正在杀死端口 ${port} 的pid ${pid} 中..."
if [ -z "${pid}" ];then
echo "项目未启动"
else
kill -9 $pid
fi
sleep 5 #睡眠五秒
start #调用启动方法
echo "项目重启成功!"
}
#参数选项
case "$1" in
"-status")
status
;;
"-start")
start
;;
"-stop")
stop
;;
"-restart")
restart
;;
*)
tips
;;
esac