Linux运行jar包脚本,我的 jar包和 .sh文件在同一目录。

#!/bin/sh
port=8090 #端口
jar_name=ruoyi-admin.jar  #/usr/local/ry-vue/ruoyi-admin.jar 要到当前目录执行,
#文件格式化::set ff=unix ,在win创建的文件放到linux需要格式化
#授权:chmod +x ry-vue.sh
#运行脚本提示信息
tips(){
    echo "-------------------------------------"
    echo ""
    echo "项目端口: ${port}"
    echo "项目地址: ${jar_name}"
    echo ""
    echo "你可以使用如下参数进行操作"
    echo "-status -查看当前项目运行状态"
    echo "-log -查看当前项目运行日志"
    echo "-start  -启动当前项目"
    echo "-stop  -停止当前项目"
    echo "-restart -重启当前项目"
    echo ""
    echo "-------------------------------------"
}
 
#查看状态
status(){
    #查询端口的PID
	pid=$( ps -ef |grep $jar_name |grep 'java -jar'|grep -v grep|awk '{print $2}')
    #判断端口是否被占用
    if [ -z "${pid}" ];then
        echo "没有项目在运行"
    else
        echo "项目正在运行中"
    fi
}
 
#启动项目
start(){
    pid=$( ps -ef |grep $jar_name |grep 'java -jar'|grep -v grep|awk '{print $2}')
    if [ -z "${pid}" ];then
        echo "正在启动......"
		nohup nohup java -jar  -Xms512M -Xmx512M $jar_name > /usr/local/ry-vue/catalina.out 2>&1 & 
    else
        echo "项目运行中或端口已被占用"
    fi
 
}
 
#停止项目
stop(){
    pid=$( ps -ef |grep $jar_name |grep 'java -jar'|grep -v grep|awk '{print $2}')
	if [ -z "${pid}" ];then
        echo "没有项目在运行,请先启动"
    else
        kill -9 $pid
        echo "已杀死进程为 ${pid} 的应用"
    fi
}
 
#重启项目
restart(){
    pid=$( ps -ef |grep $jar_name |grep 'java -jar'|grep -v grep|awk '{print $2}')
    echo "正在杀死端口 ${port} 的pid ${pid} 中..."
    if [ -z "${pid}" ];then
        echo "项目未启动"
    else
        kill -9 $pid
    fi
    sleep 5 #睡眠五秒
    start  #调用启动方法
    echo "项目重启成功!"
}
 
# 滚动打印日志
printLog(){
    tail -f /usr/local/ry-vue/catalina.out
}
 
#参数选项
case "$1" in
    "-status")
     status
     ;;
    "-start")
     start
     ;;
    "-stop")
     stop
     ;;
    "-log")
     printLog
     ;;
    "-restart")
     restart
     ;;
    *)
     tips
     ;;
esac

脚本也是我复制来的,有些指定了javahome路径,jar包是不需要的,
总结了以下步骤:
1 在window创建以上的ry-vue.sh文件,并上传到linux
把jar包名改成你自己的,
把start方法 printLog方法里日志的路径改成你自己的
2 vim ry-vue.sh
3 :set ff=unix ,格式化文件,不用按 a编辑
4 chmod +x ry-vue.sh ,授权
5 很重要的一点,看 jar_name=ruoyi-admin.jar,
我看了很多人写的全路径 jar_name=/usr/local/ry-vue/ruoyi-admin.jar ,试了很久,根本获取不到pid,哎都不试的吗?只能写 jar_name=ruoyi-admin.jar
6 在.sh目录执行,如下命令即可
sh ry-vue.sh -start
sh ry-vue.sh -stop
sh ry-vue.sh -restart
sh ry-vue.sh -status
sh ry-vue.sh -log

Logo

快速构建 Web 应用程序

更多推荐