springboot打包、Linux更新springboot项目的jar包

springboot打包

mvn clean package -Dmaven.test.skip=true  // 忽略测试进行打包。测试代码不会影响项目发布,但是会影响项目的打包。

Linux更新springboot项目的jar包

  1. netstat -tunlp | grep 8080
    该命令为查看指定端口的进程,8080换成jar包运行的指定端口,查出对应的PID

  2. sudo kill -9 PID
    PID为查出来的PID,杀死原来jar包的运行进程

  3. nohup java -jar /bootdo-2.0.0.jar > bootdolog.file 2>&1 &

不指定日志输出文件:nohup java -jar /bootdo-2.0.0.jar &
bootdolog.file为指定的打印log文件,
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null";
2 表示stderr标准错误

每次查进程再杀死较为麻烦,可以写个sh脚本用来运行和停止项目的运行

#APP_NAME替换jar包的路径,可以是相对路径,比如就在jar包文件夹下建脚本,可以直接写名字
#第42行为启动命令,这里指定了log的输出文件,可以自己重命名
#如果粘贴进shell脚本文件缩进很乱,可以不用管,照样运行
APP_NAME=/root/item.jar
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh item.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq 0 ]; then
    echo "${APP_NAME} is already running. pid=${pid}"
  else
    nohup java -jar ${APP_NAME}  >item.out 2>&1 &
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  sleep 5
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

启动、停止、重启、查看运行状态
sh item.sh start

sh item.sh stop

sh item.sh restart

sh 脚本名.sh status

若要脚本直接运行./脚本名.sh start,脚本需要有执行权限,执行命令

chmod +x xxx.sh

你可能感兴趣的:(springboot打包、Linux更新springboot项目的jar包)