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 ...
随机推荐
- 21天从Java转向Go之第三天——初出茅庐
名称 Go中25个关键字 只能在语法允许的地方使用,不能做为名称 break default func interface select case defer go map struct chan e ...
- Promise(resolve,reject)的基本使用
什么是Promise? Promise是一个构造函数,其原型上有 then.catch方法,还有reslove,reject等静态方法.通过创建Promise实例,可以调用Promise.protot ...
- Codeforces 1097G - Vladislav and a Great Legend(第二类斯特林数+树上背包)
Codeforces 题目传送门 & 洛谷题目传送门 首先看到这题我的第一反应是:这题跟这题长得好像,不管三七二十一先把 \(k\) 次方展开成斯特林数的形式,\(f(X)^k=\sum\li ...
- Codeforces 446D - DZY Loves Games(高斯消元+期望 DP+矩阵快速幂)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题,%%% 首先考虑所有格子都是陷阱格的情况,那显然就是一个矩阵快速幂,具体来说,设 \(f_{i,j}\) 表示走了 \(i\) 步 ...
- P7416 [USACO21FEB] No Time to Dry P
题目传送门 题意简述:给出颜色序列 \(a\),多次询问给出 \(l,r\),求涂成 \(a_l,a_{l+1},\cdots,a_r\) 的最小操作次数.每次涂色只能用一段数值更大的颜色覆盖原有的颜 ...
- [源码解析] PyTorch 分布式 Autograd (4) ---- 如何切入引擎
[源码解析] PyTorch 分布式 Autograd (4) ---- 如何切入引擎 目录 [源码解析] PyTorch 分布式 Autograd (4) ---- 如何切入引擎 0x00 摘要 0 ...
- Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!
0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),"都是汉字","含有非汉字字符") ...
- vector去重--unique
具体实现见中间源码 function template <algorithm> std::unique equality (1) template <class ForwardIte ...
- 【玩具】获取B站视频的音频片段
事情是这样的,我有个和社畜的社会地位不太相符的小爱好--听音乐剧. 基本上是在B站上点开视频听,不是不想在网易云或者QQ音乐听,只是在这些音乐软件上面,我想听的片段要不就收费,要不版本不是我喜欢的,要 ...
- tensoboard [Errno 22] Invalid argument 以及 Invalid format string问题解决
Invalid argument 问题解决: 需要保证tensorboard与tensorflow版本一致. Invalid format string 问题解决: 修改 manager.py 文件中 ...