简介

公司开发架构为java语言的rpc dubbo架构,将功能分解为各个模块,模块较多,发布到环境上的应用为编译后的jar包和配置文件,以及启动关闭jar包的shell脚本。之前经常会出现进程启动不了,或程序启动了多个的情况,此次,做了优化,结构比较严谨,代码量少,就不放到github上了,在这里做个分享,希望对你有用。

环境介绍

此脚步使用场景需要标准化环境的要求,所有jar皆可使用该脚本使用,通用性良好。

  1. jdk环境安装路径为/usr/local/jdk
  2. 发布到服务器上的目录为/data/server/appname/下
  3. 目录名即为jar包名,jar包名称为appname.jar

start.sh启动脚本

#!/bin/sh

# William Guozi
# https://www.cnblogs.com/William-Guozi, williamguozi.github.io
# You are free to modify and distribute this code,
# so long as you keep my name and URL in it. SHELL=/bin/sh
JAVA_HOME=/usr/local/jdk
export PATH="$PATH:$JAVA_HOME/bin" #获取当前目录名,即为appname
current_dir=`echo $(dirname $(readlink -f "$0"))`
jar_name=`echo $current_dir | awk -F/ '{print $NF}'`
config_file_name=application.properties #筛选是否含有含有相关进程,如果有,执行结果为0,如果没有,则为其他值
jps | grep $jar_name.jar &> /dev/null
if [ $? -eq 0 ];then
sh $current_dir/stop.sh
sh $current_dir/start.sh
else
/usr/local/jdk/bin/java -jar \
-Xms1024m \
-Xmx1024m \
-XX:MetaspaceSize=128m \
-XX:MaxMetaspaceSize=128m \
-Xmn256m \
-XX:SurvivorRatio=8 \
-XX:+UseConcMarkSweepGC \
-XX:+UseCMSCompactAtFullCollection \
-XX:CMSMaxAbortablePrecleanTime=5000 \
-XX:+CMSClassUnloadingEnabled \
-XX:CMSInitiatingOccupancyFraction=80 \
-XX:CMSFullGCsBeforeCompaction=5 \
-XX:+DisableExplicitGC \
-XX:+DisableExplicitGC \
-verbose:gc \
-Xloggc:/data/oom/gc.log \
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-XX:+UseCompressedOops \
-Djava.awt.headless=true \
-Dsun.net.client.defaultConnectTimeout=10000 \
-Dsun.net.client.defaultReadTimeout=30000 \
-Dfile.encoding=UTF-8 \
-XX:+TieredCompilation \
-XX:CICompilerCount=4 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/data/oom/ \
/data/server/$jar_name/$jar_name.jar \
--spring.config.location=file:$current_dir/$config_file_name >/dev/null 2>&1 &
jps | grep $jar_name.jar &> /dev/null
[ $? -eq 0 ] && echo "$jar_name 已经启动" || echo "$jar_name 启动失败"
fi

stop.sh关闭脚本

#!/bin/sh
# William Guozi
# https://www.cnblogs.com/William-Guozi, williamguozi.github.io
# You are free to modify and distribute this code,
# so long as you keep my name and URL in it. SHELL=/bin/sh
JAVA_HOME=/usr/local/jdk
export PATH="$PATH:$JAVA_HOME/bin" #获取当前目录名,即为appname
current_dir=`echo $(dirname $(readlink -f "$0"))`
jar_name=`echo $current_dir | awk -F/ '{print $NF}'` pidarray=`jps | grep $jar_name.jar | awk -F' ' '{print $1}'`
for pid in $pidarray; do
kill -9 $pid
echo "$jar_name 已关闭"
done
if [ -z $pidarray ];then
echo "$jar_name pid 未找到"
fi

参考文档

Linux命令大全:http://www.runoob.com/linux/linux-command-manual.html

Ops:jar包启动关闭脚本的更多相关文章

  1. Linux上java程序的jar包启动通用脚本(稳定用过)

    Linux上java程序的jar包启动通用脚本如下: #! /bin/sh export LANG="zh_CN.GBK" SERVICE_NAME=` .sh` SCRIPT_N ...

  2. springboot启动关闭脚本

    springboot项目jar包启动,application.properties.jar包.shell脚本.static目录(静态页面和jar包分离)在同一目录下 [start.sh] #!/bin ...

  3. 一个简单的Linux启动jar包的shell脚本

    背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件 ...

  4. SpringBoot项目jar包启动脚本

    startup.bat @echo off set path=X:\xxxxxxx\Java\JDK\jre\bin START "项目名" "%path%\java&q ...

  5. 启动jar包的shell脚本

    在jar包的同级目录新建文件例如:app_jar.sh 然后填写如下内容: #!/bin/bash #source /etc/profile # Auth:Liucx # Please change ...

  6. Maven下载Jar包(bat脚本)

    1.创建一个bat文件叫download.bat 2.里面写入以下代码 call mvn -f pom.xml dependency:copy-dependencies 3.创建pom.xml文件 4 ...

  7. Linux中jar包启动和jar包后台运行

    Linux 运行jar包命令如下: 方式一: java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? ...

  8. spingboot jar 包启动遇到得坑

    先摘抄一篇文章 pringboot打成jar包后,可直接用java -jar app.jar 启动,或者使用 nohup java -jar app.jar & 后台启动,也可以将 jar包链 ...

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

    背景:记录在linux环境下部署jar程序的过程 1 部署过程记录 1.1 程序结构 这里的main函数就在DemRest2.java 文件中. 为了部署方便,要做到以下两点: 1 在导出的jar包中 ...

随机推荐

  1. Spring Data JPA使用findAllOrderBy时踩的坑

    Spring Data JPA使用findAllOrderBy时踩的坑 按照以往的编程经验,我的写法是这样的: List<ActivityEntity> findAllOrderByWis ...

  2. 简单聊一聊JS中的循环引用及问题

    本文主要从 JS 中为什么会出现循环引用,垃圾回收策略中引用计数为什么有很大的问题,以及循环引用时的对象在使用 JSON.stringify 时为什么会报错,怎样解决这个问题简单谈谈自己的一些理解. ...

  3. K8s 实践 | 如何解决多租户集群的安全隔离问题?

    作者 | 匡大虎  阿里巴巴技术专家 导读:如何解决多租户集群的安全隔离问题是企业上云的一个关键问题,本文主要介绍 Kubernetes 多租户集群的基本概念和常见应用形态,以及在企业内部共享集群的业 ...

  4. 使用PE启动盘清空电脑登入密码

    1.PE启动盘制作过程 要制作一个启动盘可以使用很多工具来制作,比如老毛桃.U深度.大白菜等软件都可以制作PE启动盘.此处就用老毛桃制作PE启动盘为例(http://www.laomaotao.tv/ ...

  5. css部分概念

    1.层叠 规则之间属性相同,值不同的时候就会发生声明冲突,这个时候层叠就会起作用了,层叠会将我们声明的不同的值进行保留,相同的值进行比较,选权重值更高的一个来运行.具体情境如下:假设我们定义了一个di ...

  6. vnpy源码阅读学习(4):自己写一个类似vnpy的UI框架

    自己写一个类似vnpy的界面框架 概述 通过之前3次对vnpy的界面代码的研究,我们去模仿做一个vn.py的大框架.巩固一下PyQt5的学习. 这部分的代码相对来说没有难度和深度,基本上就是把PyQt ...

  7. vue学习笔记3: 动态绑定

    一.知识点 动态绑定: vue-class: 三目写法 对象写法 数组写法 vue-style: 三目写法 对象写法 数组写法 二.代码示例 1. vue-class vue-class三目写法 &l ...

  8. Linux环境下Mysql开启远程访问权限

    如何通过Window的数据库可视化工具远程连接装在Linux上的Mysql呢?可以按照以下步骤逐一确认! 检查监听端口是否存在 netstat -ntlp |grep mysql 检查Mysql配置配 ...

  9. Nginx作为负载均衡——实战演练

    配置语法 Syntax:upstream name {...} Default:—— Context:http 演示 准备两台虚拟主机192.168.96.188.192.168.96.188 在18 ...

  10. 【聚类评价】Calinski-Harabaz(CH)

    Calinski-Harabaz(CH) CH指标通过计算类中各点与类中心的距离平方和来度量类内的紧密度,通过计算各类中心点与数据集中心点距离平方和来度量数据集的分离度,CH指标由分离度与紧密度的比值 ...