springboot项目打jar包发布上线、查看日志和进程号 您所在的位置:网站首页 查看jar文件 springboot项目打jar包发布上线、查看日志和进程号

springboot项目打jar包发布上线、查看日志和进程号

2023-03-24 00:50| 来源: 网络整理| 查看: 265

目录前言一、Maven打包1.1 删除test文件和对应依赖(不建议)1.2 pom.xml中配置跳过测试1.3 使用idea打包1.4 使用maven命令打包二、启动jar包2.1 简单启动2.2 后台运行并打印日志2.3 脚本启动三、查看日志3.1 tail命令查看日志3.2 cat命令查看日志四、其他操作4.1 jps命令查看进程4.2 ps查询进程4.3 查看端口占用

前言

在项目开发完成后,需要把项目发布到Linux服务器上,在没使用到Jenkins时,项目的部署的步骤是怎么样的呢?

一、Maven打包

都知道maven的package命令是可以打成jar包的,但是在发布项目时,服务器上的路径或者数据库地址都是不一样的(打印日志的logback.xml的存放路径,或者数据库的连接地址不一致),因为package命令执行时会包含test。 在这里插入图片描述 空 contextLoads () 是验证应用程序是否能够成功加载 Spring 上下文的测试,相当于启动下项目能不能成功。

1.1 删除test文件和对应依赖(不建议)

在这里插入图片描述

1.2 pom.xml中配置跳过测试 org.apache.maven.pluginsmaven-surefire-plugintrue 1.3 使用idea打包

在这里插入图片描述

1.4 使用maven命令打包 mvn package -Dmaven.test.skip=true

打包成功后,在项目路径下的target目录下会生产jar包,把jar包通过ssh客户端拖到服务器上。

二、启动jar包

java -jar是启动jar包的命令,来看看还有那些有用的参数。

2.1 简单启动 java -jar /opt/project/test-demo.jar

在这里插入图片描述 此时可以使用Ctrl+C打断程序运行,关闭窗口程序退出。

2.2 后台运行并打印日志

运行命令:

nohup java -jar /opt/project/test-demo.jar --spring.config.location=/opt/project/config/test-demo.yml -Dserver.port=8082 > /opt/project/logs/demo.log 2>&1 &

参数解释

#(no hang up)不挂断,当账户退出或终端关闭时,程序仍然运行 nohup # 运行jar包 java -jar # 设置最大java堆大小 -Xmx256m # 设置初始java堆大小 -Xms256m # 指定配置文件,可覆盖jar包内部配置 --spring.config.location # 指定端口号 -Dserver.port=8082 # 指定配置文件 --spring.profiles.active=prod # 在shell中,0表示标准输入,1表示标准输出,2表示标准错误 # 【> file】 表示将标准输出输出到demo.log中 > /opt/project/logs/demo.log # 相当于 1> /opt/project/logs/demo.log # 2>&1中&则表示等同于,即标准错误也输出到标准输出中 > 2>&1 # 后台运行 &

不知道有没有想过或者试过运行的服务删除掉对应的jar包后是什么情况,服务还能访问吗? 答:jar包删除后,服务还能访问,只要某个进程仍在使用该文件,Linux就不会完全删除它。只有当最后一个用户终止或关闭该文件时,它才会完全消失。

2.3 脚本启动

demo.sh

#!/bin/sh # 指定JAR包文件夹,将来运行的时候,此文件需要与jar包同级 AppName=你的jar包名字.jar Timezone=Asia/Shanghai #运行端口 ServerPort=8088 #激活application-pro.properties配置文件 ProfilesActive=pro # JVM参数 JVM_OPTS="-Dname=$AppName -Duser.timezone=$Timezone -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC -Dspring.profiles.active=$ProfilesActive -Dserver.port=$ServerPort" # 此变量会获取到当前路径 APP_HOME=`pwd` # 日志路径 一定要有此路经的文件夹,没有此路径的文件夹,将不会有日志文件:$AppName.log,记得创建logs文件夹。 LOG_PATH=$APP_HOME/logs/$AppName.log # 获取第一个参数 如果为空,将会提示这个 if [ "$1" = "" ]; thenecho -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"exit 1 fi # 如果没有指定JAR包,将会提示这个 if [ "$AppName" = "" ]; thenecho -e "\033[0;31m 未输入应用名 \033[0m"exit 1 fi # start方法 function start(){# 获取PID,最后打印出结果$2 就是PID 注意,此处$2不是我们运行此脚本的第二个参数($0 不算做第一个参数)!PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`if [ x"$PID" != x"" ]; thenecho "$AppName is running..."elsenohup java -jar $JVM_OPTS $AppName > $LOG_PATH 2>&1 &echo "Start $AppName success..."fi } # stop方法 function stop(){echo "Stop $AppName"PID=""# 定制查询服务PID的方法query(){PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`}# 第一次查询状态,更变PIDqueryif [ x"$PID" != x"" ]; thenkill -TERM $PIDecho "$AppName (pid:$PID) exiting..."while [ x"$PID" != x"" ]do# 间隔1秒执行后续代码sleep 1# 这是一个死循环,检查每一次PID,都会更变PID的最新结果,如果PID等于空了,就结束循环,输出结束querydoneecho "$AppName exited."elseecho "$AppName already stopped."fi }function restart(){# 先停止服务,然后等待5秒后,再次重启服务stopsleep 5start }function status(){# 获取PIDPID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`# 如果PID为0,代表服务器停止,不为0,就代表服务器正在运行if [ $PID != 0 ];thenecho "$AppName is running..."elseecho "$AppName is not running..."fi } # 获取第一个参数,执行不同的方法! case $1 instart)start;;stop)stop;;restart)restart;;status)status;;*) # case的结束标志 esac

创建demo.sh后,需要给脚本权限

chmod 777 demo.sh

启动服务

./demo.sh start

停止服务

./demo.sh start 三、查看日志 3.1 tail命令查看日志

显示日志最后10行 tail -n 10 demo.log

实时监控显示日志最后10行 tail -10f demo.log

3.2 cat命令查看日志

搜索关键字,-n显示行数

cat -n filename | grep "关键字"

显示日志里匹配OutOfMemoryError那行已经前后10行

cat filename | grep -C 10 OutOfMemoryError 四、其他操作 4.1 jps命令查看进程

jps命令是JDK提供的一个命令行工具,用来显示当前所有java虚拟机的进程信息。

jps -mlvV -m:显示Java虚拟机启动时传递给main()方法的参数。-l:显示主类的完整包名,如果进程执行的是JAR文件,也会显示JAR文件的完整路径。-v:显示Java虚拟机启动时传递的JVM参数。-V:不显示主类名称、JAR文件名和传递给主方法的参数,只显示本地虚拟机唯一ID。 在这里插入图片描述 4.2 ps查询进程

查询java进程 ps -ef | grep java

查询java进程排除当前进程 ps -ef | grep java | grep -v grep

4.3 查看端口占用

netstat -tunlp | grep 8080 在这里插入图片描述 如果使用netstat报错 -bash: netstat: command not found

【解决方法】

yum install net-tools

关闭进程 kill -9 进程号



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有