#!/bin/sh
port=8080 #定义变量等号左右不能有空格
jar_name=/usr/local/jar/cloud-websocket-service.jar
log_path=/usr/local/jar/log/`date +%y%m%d`_cloud-websocket-service.log
jar=cloud-websocket-service
#运行脚本提示信息
tips(){
echo "-------------------------------------"
echo ""
echo "项目端口: ${port}"
echo "项目地址: ${jar_name}"
echo ""
echo "你可以使用如下参数进行操作"
echo "-status -查看当前项目运行状态"
echo "-start -启动当前项目"
echo "-stop -停止当前项目"
echo "-restart -重启当前项目"
echo ""
echo "-------------------------------------"
}
#查看状态
status(){
#查询端口的PID {print $7}-取出打印的第七个值
pid=`netstat -apn |grep '\<8080\>' |awk '{print $7}' |cut -d/ -f 1`
#判断端口是否被占用
if [ -z "${pid}" ];then
echo -e "\033[33m${jar} 没有项目在运行\033[0m"
else
echo -e "\033[32m${jar}-----项目正在运行中\033[0m"
fi
}
#启动项目
start(){
pid=`netstat -apn |grep '\<8080\>' |awk '{print $7}' |cut -d/ -f 1`
if [ -z "${pid}" ];then
echo -e "\033[32m${jar}正在启动...\033[0m"
nohup java -jar -Xms1024m -Xmx1024m $jar_name >$log_path 2>&1 &
for((i=1;i<=30;i++)); #循环30秒判断项目是否执行成功
do
pid=`netstat -apn |grep '\<8080\>' |awk '{print $7}' |cut -d/ -f 1`
if [ -z "${pid}" ];then
sleep 1
else
echo -e "\033[32m${jar} 项目启动成功\033[0m"
break
fi
done
else
echo -e "\033[31m${jar} 项目运行中或端口已被占用\033[0m"
fi
}
#停止项目
stop(){
pid=`netstat -apn |grep '\<8080\>' |awk '{print $7}' |cut -d/ -f 1`
if [ -z "${pid}" ];then
echo -e "\033[33m${jar} 没有项目在运行,请先启动\033[0m"
else
kill -9 $pid
echo -e "\033[32m${jar} 已杀死端口为 ${port} 的应用\033[0m"
fi
}
#重启项目
restart(){
pid=`netstat -apn |grep '\<8080\>' |awk '{print $7}' |cut -d/ -f 1`
echo -e "\033[32m正在杀死端口 ${port} 的pid ${pid} 中...\033[0m"
if [ -z "${pid}" ];then
echo -e "\033[33m${jar} 项目未启动\033[0m"
else
kill -9 $pid
fi
sleep 5 #睡眠五秒
start #调用启动方法
echo -e "\033[32m${jar} 项目重启成功!\033[0m"
}
#参数选项
case "$1" in
"-status")
status
;;
"-start")
start
;;
"-stop")
stop
;;
"-restart")
restart
;;
*)
tips
;;
esac
pid=netstat -apn |grep '\<8080\>' |awk '{print $7}' |cut -d/ -f 1
中 不能使用 ${port} 不然查询出来的结果不对 没有找到是什么原因 有没有大神解释一下