Linux系列:编写 jar包 启动脚本

2023-11-11

包含指定环境  启动的脚本。

(指定springBoot的 application.properties)

 创建 start.sh 文件,文件内容如下:

1、直接启动

#!/bin/sh
#该脚本为Linux下启动java程序的
###################################
#!!!!!!! $1第一个参数为方法名start|stop|restart|status 
# $2第二个参数为jar包全称
#初始化psid变量(全局)
#函数内想用shell脚本外部传入的参数必须在函数方法体外声明才能使用
psid=0
jar=$2

checkpid() {
   javaps=`jps -l | grep $jar`
   if [ -n "$javaps" ]; then
      psid=`echo $javaps | awk '{print $1}'`
   else
      psid=0
   fi
}

###################################
#(函数)启动程序

start() {
   checkpid
   if [ $psid -ne 0 ]; then
      echo "================================"
      echo "FBI warning你个老六: $jar already started! (pid=$psid)"
      echo "================================"
   else
      echo "开始启动 $jar..."
      `nohup java -jar $jar >/dev/null 2>& 1 &`
      checkpid
      if [ $psid -ne 0 ]; then
         echo "FBI Warning你个老六,jar包启动成功!"
      else
         echo "FBI Warning你个老六,jar包启动失败!"
      fi
   fi
}

###################################
#(函数debug模式)启动程序

debug() {
   checkpid
   if [ $psid -ne 0 ]; then
      echo "================================"
      echo "FBI warning你个老六: $jar already started! (pid=$psid)"
      echo "================================"
   else
      echo "开始启动 $jar..."
      `nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 $jar >/dev/null 2>& 1 &`
      checkpid
      if [ $psid -ne 0 ]; then
         echo "FBI Warning你个老六,jar包启动成功!"
      else
         echo "FBI Warning你个老六,jar包启动失败!"
      fi
   fi
}

###################################
#(函数)停止程序
stop() {
   checkpid

   if [ $psid -ne 0 ]; then
      echo  "正在 stopping $jar.... "
      `kill -9 $psid`
      if [ $? -eq 0 ]; then
         echo "service $jar stop success"
      else
         echo "service $jar stop fail"
      fi
   else
      echo "================================"
      echo "warn: $jar is not running"
      echo "================================"
   fi
}

###################################
#(函数)检查程序运行状态
status() {
   checkpid

   if [ $psid -ne 0 ];  then
      echo "$jar is running! (pid=$psid)"
   else
      echo "$jar is not running"
   fi
}

###################################
#读取脚本的第一个参数($1),进行判断
#参数取值范围:{start|stop|restart|status|info}
#如参数不在指定范围之内,则打印帮助信息
###################################
case "$1" in
   'start')
      start
      ;;
   'stop')
     stop
     ;;
   'restart')
     stop
     start
     ;;
   'redebug')
     stop
     debug
     ;;
   'status')
     status
     ;;
esac

启动指令为:  ./start.sh start xxxx.jar

停止服务:     ./start.sh stop xxxx.jar

nohup 启动的相关参数,可自行添加。

注意,新建的 .sh文件 需分配权限,可以使用 chmod 755 xxx.sh 指令

2、指定配置文件启动。

     如项目中,application-dev.properties 文件,则使用dev

     只修改  start 函数

start() {
   checkpid
   if [ $psid -ne 0 ]; then
      echo "================================"
      echo "FBI warning你个老六: $jar already started! (pid=$psid)"
      echo "================================"
   else
      echo "开始启动 $jar..."
      `nohup java -jar $jar --spring.profiles.active=$active >/dev/null 2>& 1 &`
      checkpid
      if [ $psid -ne 0 ]; then
         echo "FBI Warning你个老六,jar包启动成功!"
      else
         echo "FBI Warning你个老六,jar包启动失败!"
      fi
   fi
}

如若 上:

启动指令为:    ./start.sh start xxxx.jar dev    (dev为对应的坏境的)

停止服务:      ./start.sh stop xxxx.jar

spring.profiles.active=  指定要加载的配置文件,也可以直接写死

注意,.sh文件 需分配权限,可以使用 chmod 755 xxx.sh 指令

3、使用 加载外部的配置文件启动。

     配置文件放在指定文件夹中,如若修改 application.properties。不需要重打包

     只修改  start 函数

start() {
   checkpid
   if [ $psid -ne 0 ]; then
      echo "================================"
      echo "FBI warning你个老六: $jar already started! (pid=$psid)"
      echo "================================"
   else
      echo "开始启动 $jar..."
      `nohup java -Dspring.config.additional-location=file:/apphome/bers/java/dyh/application.properties -jar $jar >/dev/null 2>& 1 &`
      checkpid
      if [ $psid -ne 0 ]; then
         echo "FBI Warning你个老六,jar包启动成功!"
      else
         echo "FBI Warning你个老六,jar包启动失败!"
      fi
   fi
}

我把配置文件放在 /apphome/bers/java/dyh/application.properties。

指定配置文件启动

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系列:编写 jar包 启动脚本 的相关文章

随机推荐

  • VS安装配置OpenCV(C++)

    目录 第一章 Opencv安装及其环境变量配置 1 1下载并安装OpenCV 1 2 OpenCV环境变量配置 第二章 Visual Studio 2019 编译器下载安装 第三章 OpenCV开发环境配置 C 3 1创建项目 3 2 添加
  • 全国信息技术标准化技术委员会汉字内码扩展规范(GBK)

    全国信息技术标准化技术委员会 汉字内码扩展规范 GBK Chinese Internal Code Specification 1 0 版 按编码顺序排列 81 丂 丄 丅 丆 丏 丒 丗 丟 丠 両 丣 並 丩 丮 丯 丱 丳 丵 丷 丼
  • 记一次使用EasyExcel出现Convert excel format exception.You can try specifying the ‘excelType‘ yourself

    EasyExcel 3 0 出现 com alibaba excel exception ExcelCommonException Convert excel format exception You can try specifying
  • Vue常用知识点汇总

    1 Vue常见的指令有哪些 有什么用 1 v text 会替换掉元素里的内容 2 v html 可以渲染html界面 3 v clock 防止界面闪烁 4 v bind 界面元素属性值的绑定 简写为 5 v on 事件绑定 简写为 6 v
  • K8s 管理工具 kubectl 详解

    文章目录 一 陈述式管理 1 陈述式资源管理方法 2 k8s 相关信息查看 2 1 查看版本信息 2 2 查看资源对象简写 2 3 查看集群信息 2 4 配置kubectl自动补全 2 5 查看日志 2 6 基本信息查看 2 6 1 查看m
  • SPRING是如何解决循环依赖的?为什么无法解决多例和构造器的循环依赖

    标签 java spring 文章目录 1 什么是循环依赖 2 解决循环依赖思路 3 二级缓存能否解决循环依赖 三级缓存存在的意义 4 多例和构造器为什么无法解决循环依赖 5 如何进行扩展 6 spring在创建bean的时候 在哪里创建的
  • 【C++数据结构】程序性能分析

    程序性能分析 2 1 什么是程序性能 程序性能 所谓程序性能 performance of a program 是指运行这个程序所需要的内存和时间的多少 性能分析 在性能分析 performance analysis 时 采用分析方法 性能
  • 在gitee网页中创建分支后,在vscode中更新分支

    在vscode中更新gitee上创建的分支 在网页创建分支之后 vscode中git pull origin更新在gitee创建的分支 更新之后这里有origin test分支 选中之后 通过git bracn就可以看到线上的分支了
  • 深度理解yolov3损失函数

    深度理解yolov3损失函数 在yolov3中 loss分为三个部分 一个是xywh部分带来的误差 也就是bbox带来的loss 一个是置信度带来的误差 也就是obj带来的loss 最后一个是类别带来的误差 也就是class带来的loss
  • 支付订单同步回调

    public function pay params input 接收数据 判断订单号支付方式不为空 validate this gt validate params order sn gt require pay code 支付方式 gt
  • 30秒内便能学会的30个超实用Python代码片段

    许多人在数据科学 机器学习 web开发 脚本编写和自动化等领域中都会使用Python 它是一种十分流行的语言 Python流行的部分原因在于简单易学 本文将简要介绍30个简短的 且能在30秒内掌握的代码片段 1 唯一性 以下方法可以检查给定
  • MFC多线程同步

    MFC提供了多种同步对象 下面我们只介绍最常用的四种 1 临界区 CCriticalSection 2 事件 CEvent 3 互斥量 CMutex 4 信号量 CSemaphore 一 临界区 使用CCriticalSection类 是一
  • vue路由拦截

    1 在main js中写入下面这些代码 路由拦截 router beforeEach to from next gt if to meta requireAuth 判断该路由是否需要登录权限 if sessionStorage getIte
  • git 下载和安装

    1 什么是git git 是一个分布式的版本控制工具 git 官网 git 官网 2 为什么使用git 保留之前所有版本 以便后续的修改和回滚 方便多人协同开发 3 安装git 3 1 在Linux 上安装 以 Fedora 为例 如果你在
  • Nginx Ubuntu下编译和安装

    1 登录nginx官网http nginx org en download html 下载nginx最新版本 解压nginx 得到目录nginx 1 17 8 tar zxvf nginx 1 17 8 tar gz 2 下载http fl
  • YouCompleteMe unavailable : requires Vim 7.4.143

    版本问题 ubuntu 14 05 安装完YouCompleteMe后不生效 提示 YouCompleteMe unavailable requires Vim 7 4 143经过检索与查询 ubuntu自带的vim为7 4 50 需要安装
  • js延时函数

    js延时函数总结 在js中 延迟执行函数有两种 setTimeout和setInterval 用法如下 setTimeout test 5000 5秒后执行testFunction 函数 只执行一次 setInterval test 500
  • Ubuntu小技巧9--使用Samba服务实现Windows和Linux文件访问

    Ubuntu小技巧8 Ubuntu小技巧9 使用Samba服务实现Windows和Linux文件访问 很多时候做开发的时候需要在Linux上编译运行 但是又想用Windows的优秀工具 不停的将文件拷贝到Windows和Linux是极其浪费
  • 高德地图api之编码(Geocoder)

    高德地图目前仅支持中国范围内的的地理编码和反地理编码 当我们在做搜索功能的时候 由于用户不可以记住地点的经纬度 所以只可能输入地名 所以地理编码就显得额外重要 这里我们查看一下AMap api中的地理编码 地理编码 地理编码 顾名思义就是根
  • Linux系列:编写 jar包 启动脚本

    包含指定环境 启动的脚本 指定springBoot的 application properties 创建 start sh 文件 文件内容如下 1 直接启动 bin sh 该脚本为Linux下启动java程序的 1第一个参数为方法名star