shell脚本命令启动jar包

#!/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} 不然查询出来的结果不对 没有找到是什么原因 有没有大神解释一下

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值