Linux通过Shell脚本操作Jar包运行状态

通过shell脚本对Java项目进行状态查询、服务启动、服务停止、服务重启操作。

创建***.sh文件,编写shell脚本,内容如下:

#!/bin/sh
port=8080 #定义变量等号左右不能有空格
jar_name=/opt/app/***.jar
 
#运行脚本提示信息
tips(){
    echo "-------------------------------------"
    echo ""
    echo "服务端口: ${port}"
    echo "Jar包路径: ${jar_name}"
    echo ""
    echo "可执行命令参数:"
    echo "-status -查看当前服务运行状态"
    echo "-start  -启动服务"
    echo "-stop  -停止服务"
    echo "-restart -重启服务"
    echo ""
    echo "-------------------------------------"
}
 
#查询状态
status(){
    #查询端口的PID {print $7}-取出打印的第七个值
    pid=`netstat -apn |grep $port |awk '{print $7}' |cut -d/ -f 1`
    #判断端口是否被占用
    if [ -z "${pid}" ];then
        echo "没有项目在运行"
    else
        echo "项目正在运行中"
    fi
}
 
#启动项目
start(){
    pid=`netstat -apn |grep $port |awk '{print $7}' |cut -d/ -f 1`
    if [ -z "${pid}" ];then
        echo "正在启动......"
        java -jar -Xms1024m -Xmx1024m $jar_name
    else
        echo "项目运行中或端口已被占用"
    fi
 
}
 
#停止项目
stop(){
    pid=`netstat -apn |grep $port |awk '{print $7}' |cut -d/ -f 1`
    if [ -z "${pid}" ];then
        echo "没有项目在运行,请先启动"
    else
        kill -9 $pid
        echo "已杀死端口为 ${port} 的应用"
    fi
}
 
#重启项目
restart(){
    pid=`netstat -apn |grep $port |awk '{print $7}' |cut -d/ -f 1`
    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

注:
创建完成后需要对文件授权才能执行
#授予文件最大权限
chmod 777 ***.sh

示例命令
./***.sh -status

你可能感兴趣的:(linux,jar,运维)