java 8 启动脚本优化
1 #!/bin/bash
2
3 JAVA_HOME=/usr/java/default
4
5 #java虚拟机启动参数
6 JAVA_OPTS="-server -Xms1366m -Xmx2g -Xmn768m -Xss256k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:/data/logs/video-api/gc.log "
7
8 #这里可替换为你自己的执行程序,其他代码无需更改
9 APP_NAME=video.jar
10 APP_USER=tomcat
11
12 #SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
13 SHUTDOWN_WAIT=90
14
15 workdir=$(cd $(dirname $0); pwd)
16
17 #使用说明,用来提示输入参数
18 usage() {
19 echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
20 exit 1
21 }
22
23 #检查程序是否在运行
24 is_exist(){
25 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
26 #如果不存在返回1,存在返回0
27 if [ -z "${pid}" ]; then
28 return 1
29 else
30 return 0
31 fi
32 }
33
34 # @args <beg> <end>
35 # return random integer in [<beg>, <end>)
36 function random_range() {
37 local beg=$1
38 local end=$2
39 echo $((RANDOM % ($end - $beg) + $beg))
40 }
41
42 #启动方法
43 start(){
44 is_exist
45 if [ $? -eq "0" ]; then
46 echo "${APP_NAME} is already running. pid=${pid} ."
47 else
48 #port=$(random_range 30000 60000)
49 port=8004
50 nohup java $JAVA_OPTS -jar $workdir/$APP_NAME --server.port=$port > /dev/null 2>&1 &
51 is_exist
52 if [ $? -eq "0" ]; then
53 echo "${APP_NAME} started. pid=${pid}, port=$port."
54 fi
55 fi
56 }
57
58 #停止方法
59 stop(){
60 is_exist
61 if [ $? -eq "0" ]; then
62 kill $pid
63
64
65 let kwait=$SHUTDOWN_WAIT
66 count=0;
67 until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
68 do
69 echo -n -e "\n\e[00;31mwaiting for processes to exit\e[00m";
70 sleep 1
71 let count=$count+1;
72 done
73
74 if [ $count -gt $kwait ]; then
75 echo -n -e "\n\e[00;31mkilling processes didn't stop after $SHUTDOWN_WAIT seconds\e[00m"
76 kill -9 $pid
77 fi
78
79 echo "${APP_NAME} stoped."
80 else
81 echo "${APP_NAME} is not running"
82 fi
83 }
84
85 #输出运行状态
86 status(){
87 is_exist
88 if [ $? -eq "0" ]; then
89 echo "${APP_NAME} is running. Pid is ${pid}"
90 else
91 echo "${APP_NAME} is NOT running."
92 fi
93 }
94
95 #重启
96 restart(){
97 stop
98 start
99 }
100
101 #根据输入参数,选择执行对应方法,不输入则执行使用说明
102 case "$1" in
103 "start")
104 start
105 ;;
106 "stop")
107 stop
108 ;;
109 "status")
110 status
111 ;;
112 "restart")
113 restart
114 ;;
115 *)
116 usage
117 ;;
118 esac
java 8 启动脚本优化的更多相关文章
- java 8 启动脚本优化 3
#!/bin/bash #链接文件 source /etc/profile #java虚拟机启动参数 #通过http://xxfox.perfma.com/jvm/check来检查参数的合理性 #各参 ...
- java 8 启动脚本优化 2
#!/bin/bash #链接文件 source /etc/profile #java虚拟机启动参数 #通过http://xxfox.perfma.com/jvm/check来检查参数的合理性 JAV ...
- 不错的linux下通用的java程序启动脚本
不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...
- 不错的linux下通用的java程序启动脚本(转载)
转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包 ...
- 【转】不错的linux下通用的java程序启动脚本
虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用 ...
- shell java应用启动脚本(app.sh)
#!/bin/sh # java服务中需要的jar文件或classpath路径,如业务程序.第三方jar文件log4j等 ShellAbsPath=$(cd "$(dirname " ...
- java程序启动脚本
#!/bin/bash appName=`ls|grep .jar$` if [ -z $appName ] then echo "Please check that this script ...
- java后台服务器启动脚本
最近由于经常在项目上线或者调试中启动服务,由于要设置环境变量这些,所以为了方便写了个启动脚本,希望能够帮助大家,也算是给自己做个小笔记: example_project_start.sh: # /bi ...
- linux下启动和终止JAVA程序shell脚本
1.启动脚本start.sh #run application backgroud nohup java -jar chess-admin->& & #record the pr ...
随机推荐
- DirectX12 3D 游戏开发与实战第七章内容(下)
利用Direct3D绘制几何体(续) 学习目标 学会一种无须每帧都要刷新命令队列的渲染流程,由此来优化程序的性能 了解另外两种跟签名参数类型:根描述符和根常量 探索如何在程序中生成和绘制常见的几何体, ...
- shell批量创建用户
#!/bin/bash cat << EOF ************************************************************ 批量添加用户并随机生 ...
- Linux服务器I/O性能分析-3
一.通过脚本分析IO的读/写数量.最大延迟.延迟的分布情况.块大小及数量 #!/bin/sh # # File Name : count_io.sh # Time : 2020-07-29-11:24 ...
- 关于写SpringBoot+Mybatisplus+Shiro项目的经验分享一:简单介绍
这次我尝试写一个原创的项目 the_game 框架选择: SpringBoot+Mybatisplus+Shiro 首先是简单的介绍(素材灵感来自英雄联盟) 5个关键的表: admin(管理员): l ...
- RocketMQ这样做,压测后性能提高30%
从官方这边获悉,RocketMQ在4.9.1版本中对消息发送进行了大量的优化,性能提升十分显著,接下来请跟着我一起来欣赏大神们的杰作. 根据RocketMQ4.9.1的更新日志,我们从中提取到关于消息 ...
- 《Scala编程》课程作业
第一题.百元喝酒 作业要求:每瓶啤酒2元,3个空酒瓶或者5个瓶盖可换1瓶啤酒.100元最多可喝多少瓶啤酒?(不允许借啤酒) 思路:利用递归算法,一次性买完,然后递归算出瓶盖和空瓶能换的啤酒数 /** ...
- Spark基础:(六)Spark SQL
1.相关介绍 Datasets:一个 Dataset 是一个分布式的数据集合 Dataset 是在 Spark 1.6 中被添加的新接口, 它提供了 RDD 的优点(强类型化, 能够使用强大的 lam ...
- Hadoop、Hive【LZO压缩配置和使用】
目录 一.编译 二.相关配置 三.为LZO文件创建索引 四.Hive为LZO文件建立索引 1.hive创建的lzo压缩的分区表 2.给.lzo压缩文件建立索引index 3.读取Lzo文件的注意事项( ...
- Linux:cut命令...未完待续
一.定义 正如其名,cut的工作就是"剪",具体的说就是在文件中负责剪切数据用的.cut是以每一行为一个处理对象的,这种机制和sed是一样的. 2.剪切依据 cut命令主要是接受三 ...
- Linux:while read line与for循环的区别
while read line:是一次性将文件信息读入并赋值给变量line , while中使用重定向机制,文件中的所有信息都被读入并重定向给了整个while 语句中的line 变量. for:是每次 ...