Ops:jar包启动关闭脚本
简介
公司开发架构为java语言的rpc dubbo架构,将功能分解为各个模块,模块较多,发布到环境上的应用为编译后的jar包和配置文件,以及启动关闭jar包的shell脚本。之前经常会出现进程启动不了,或程序启动了多个的情况,此次,做了优化,结构比较严谨,代码量少,就不放到github上了,在这里做个分享,希望对你有用。
环境介绍
此脚步使用场景需要标准化环境的要求,所有jar皆可使用该脚本使用,通用性良好。
- jdk环境安装路径为/usr/local/jdk
- 发布到服务器上的目录为/data/server/appname/下
- 目录名即为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包启动关闭脚本的更多相关文章
- Linux上java程序的jar包启动通用脚本(稳定用过)
Linux上java程序的jar包启动通用脚本如下: #! /bin/sh export LANG="zh_CN.GBK" SERVICE_NAME=` .sh` SCRIPT_N ...
- springboot启动关闭脚本
springboot项目jar包启动,application.properties.jar包.shell脚本.static目录(静态页面和jar包分离)在同一目录下 [start.sh] #!/bin ...
- 一个简单的Linux启动jar包的shell脚本
背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件 ...
- SpringBoot项目jar包启动脚本
startup.bat @echo off set path=X:\xxxxxxx\Java\JDK\jre\bin START "项目名" "%path%\java&q ...
- 启动jar包的shell脚本
在jar包的同级目录新建文件例如:app_jar.sh 然后填写如下内容: #!/bin/bash #source /etc/profile # Auth:Liucx # Please change ...
- Maven下载Jar包(bat脚本)
1.创建一个bat文件叫download.bat 2.里面写入以下代码 call mvn -f pom.xml dependency:copy-dependencies 3.创建pom.xml文件 4 ...
- Linux中jar包启动和jar包后台运行
Linux 运行jar包命令如下: 方式一: java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? ...
- spingboot jar 包启动遇到得坑
先摘抄一篇文章 pringboot打成jar包后,可直接用java -jar app.jar 启动,或者使用 nohup java -jar app.jar & 后台启动,也可以将 jar包链 ...
- linux服务器部署jar包以及shell脚本的书写
背景:记录在linux环境下部署jar程序的过程 1 部署过程记录 1.1 程序结构 这里的main函数就在DemRest2.java 文件中. 为了部署方便,要做到以下两点: 1 在导出的jar包中 ...
随机推荐
- spring boot使用拦截器
1.编写一个拦截器 首先,我们先编写一个拦截器,和spring mvc方式一样.实现HandlerInterceptor类,代码如下 package com.example.demo.intercep ...
- MySQL快速回顾:更新和删除操作
前提要述:参考书籍<MySQL必知必会> 6.1 更新数据 为了更新(修改)表中的数据,可使用UPDATE语句.可采用两种方式使用UPDATE: 更新表中特定的行: 更新表中所有的行. U ...
- how to render html tag
使用autoescaping If autoescaping is turned on in the environment, all output will automatically be esc ...
- mysql时间类型和格式转换
内容目录 简介mysql时间类型DATE_FORMAT()函数 简介 今天开发中,做一个功能需要对历史数据进行补充,相信大家也遇到过这样的情况,这个历史数据需要按月份和人的id进行区分,于是想到了my ...
- 【C&数据结构】---关于链表结构的前序插入和后序插入
刷LeetCode题目,需要用到链表的知识,忽然发现自己对于链表的插入已经忘得差不多了,以前总觉得理解了记住了,但是发现真的好记性不如烂笔头,每一次得学习没有总结输出,基本等于没有学习.连复盘得机会都 ...
- MST + 树形 dp
Genghis Khan(成吉思汗)(1162-1227), also known by his birth name Temujin(铁木真) and temple name Taizu(元太祖), ...
- dubbo配置文件解读(2)
<dubbo:service/> <dubbo:reference/> <dubbo:protocol/> <dubbo:registry/> < ...
- 初入python,与同学者的第一次见面(小激动)
自2017来,接触python其实已经算是蛮久了,最苦的时光还是刚开始的时候,真的,我感觉编程就是一种感觉,有的时候就像找对象一样,感觉对了,怎么学都是带劲哈哈哈.在这个周围都在学习PHP的环境下,我 ...
- Excel查找匹配函数的16种方法
作者:高顿初级会计链接:https://zhuanlan.zhihu.com/p/79795779来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1.普通查找 查找李晓 ...
- Lobooi个人作业:阅读与准备作业
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业要求在哪里 https://edu.cn ...