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 启动脚本优化的更多相关文章

  1. java 8 启动脚本优化 3

    #!/bin/bash #链接文件 source /etc/profile #java虚拟机启动参数 #通过http://xxfox.perfma.com/jvm/check来检查参数的合理性 #各参 ...

  2. java 8 启动脚本优化 2

    #!/bin/bash #链接文件 source /etc/profile #java虚拟机启动参数 #通过http://xxfox.perfma.com/jvm/check来检查参数的合理性 JAV ...

  3. 不错的linux下通用的java程序启动脚本

    不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...

  4. 不错的linux下通用的java程序启动脚本(转载)

    转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包 ...

  5. 【转】不错的linux下通用的java程序启动脚本

    虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用 ...

  6. shell java应用启动脚本(app.sh)

    #!/bin/sh # java服务中需要的jar文件或classpath路径,如业务程序.第三方jar文件log4j等 ShellAbsPath=$(cd "$(dirname " ...

  7. java程序启动脚本

    #!/bin/bash appName=`ls|grep .jar$` if [ -z $appName ] then echo "Please check that this script ...

  8. java后台服务器启动脚本

    最近由于经常在项目上线或者调试中启动服务,由于要设置环境变量这些,所以为了方便写了个启动脚本,希望能够帮助大家,也算是给自己做个小笔记: example_project_start.sh: # /bi ...

  9. linux下启动和终止JAVA程序shell脚本

    1.启动脚本start.sh #run application backgroud nohup java -jar chess-admin->& & #record the pr ...

随机推荐

  1. Identity Server 4 从入门到落地(一)—— 从IdentityServer4.Admin开始

    最近项目中需要使用Identity Server 4,以前对这个技术只是有些了解,没有系统研究过,网上相关的资料不少,大多是从编写一个简单的认证服务开始,离能够落地使用有相当的距离,理论学习如何不结合 ...

  2. vue-cli的安装步骤

    1.安装Node.js 在Node.js官网 https://nodejs.org/zh-cn/下载安装包,修改安装路径到其它盘,如 G:\Program Files 2.设置 cnpm的下载路径和缓 ...

  3. FVCOM泥沙模块河流边界处理

    简介 入流河流携带泥沙可以按照节点和边界两种形式给定,这两种方法都是在相关的节点上进行直接赋值,并不能保证进入计算域内泥沙总体积. 相关设置 XX_run.nml 河流参数设置 &NML_RI ...

  4. confluence——实现

    基于CentOS6.9 [root@localhost ~]# yum install mysql mysql-server -y [root@localhost ~]#yum install -y ...

  5. 66-Reorder List

    Reorder List My Submissions QuestionEditorial Solution Total Accepted: 64392 Total Submissions: 2818 ...

  6. Excel-统计各分数段人数 frequency()

    FREQUENCY函数 函数名称:FREQUENCY 主要功能:以一列垂直数组返回某个区域中数据的频率分布. 使用格式:FREQUENCY(data_array,bins_array) 参数说明:Da ...

  7. hadoop-uber作业模式

    如果作业很小,就选择和自己在同一个JVM上运行任务,与在一个节点上顺序运行这些任务相比,当application master 判断在新的容器中的分配和运行任务的开销大于并行运行它们的开销时,就会发生 ...

  8. NuxtJS的AsyncData和Fetch使用详解

    asyncData 简介 asyncData 可以用来在客户端加载 Data 数据之前对其做一些处理,也可以在此发起异步请求,提前设置数据,这样在客户端加载页面的时候,就会直接加载提前渲染好并带有数据 ...

  9. 【Reverse】每日必逆0x02

    BUU SimpleRev 附件 https://files.buuoj.cn/files/7458c5c0ce999ac491df13cf7a7ed9f1/SimpleRev 题解 查壳 拖入iad ...

  10. 【vector+pair】洛谷 P4715 【深基16.例1】淘汰赛

    题目:P4715 [深基16.例1]淘汰赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题因为数据范围不大,所以做法可以非常简单,使用一个vector加上pair就可以了: ...