Linux自定义shell脚本一键启停微服务jar包

Posted 潇潇雨歇_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux自定义shell脚本一键启停微服务jar包相关的知识,希望对你有一定的参考价值。

Java项目在Linux系统中的部署通常是以tomcat等容器化的方式部署,或者jar包的形式直接运行。在自动化部署畅行的今天,仍然会有不少的公司采用手动部署的方式部署 jar 包。而微服务打包形成的诸多jar,和上线前后频繁的诸多升级部署操作,让负责项目的开发运维人员叫苦不迭,因此需要一套便捷的部署脚本,实现便捷的一键启停等操作。

1.常用的部署命令:

ps -ef |grep 服务名
kill -9 PID
nohup java -jar 服务名 &
tail -f nohup.out

2.一个简单的一键启停脚本

以下是单个服务的一键启停,如果是多个服务的启停,可以根据以下脚本进行拓展。

#!/bin/sh
port=8080 #端口
jar_name=/app/test/test-admin.jar
 
#运行脚本提示信息
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 java -jar $jar_name > logs/catalina.out &
    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 logs/catalina.out
}
 
#参数选项
case "$1" in
    "-status")
     status
     ;;
    "-start")
     start
     ;;
    "-stop")
     stop
     ;;
    "-log")
     printLog
     ;;
    "-restart")
     restart
     ;;
    *)
     tips
     ;;
esac

3.将文件转成unix格式

sed -i 's/\\r$//' test.sh

4.给.sh文件授予可执行权限

chmod +x test.sh

5.脚本启停项目测试

 

./test.sh -start      启动项目

./test.sh -log        查看实时日志

./test.sh -stop       停止项目

以上是关于Linux自定义shell脚本一键启停微服务jar包的主要内容,如果未能解决你的问题,请参考以下文章

想请大神写一个在linux环境下用shell脚本控制jar的启动和停止,类似于一个后台服务那种的。

在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service

linux服务器部署jar包以及shell脚本的书写

Linux系统shell脚本之启停nginx

Linux( java) jar包启停脚本

Linux( java) jar包启停脚本