jar 包启动脚本

  1 #!/bin/bash
  2
  3 JAVA_HOME=/usr/java/default
  4
  5 #java虚拟机启动参数
  6 JAVA_OPTS="-server -Xms800m -Xmx800m -Xmn256m -Xss256k -XX:PermSize=256M -XX:MaxPermSize=512M -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/newslib-app-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

原文地址:https://www.cnblogs.com/tonyauto/p/10330043.html

时间: 2024-10-30 11:18:39

jar 包启动脚本的相关文章

通用jar包启动脚本

通用jar包启动脚本 使用方法: 把本脚本和jar包放置在同一目录,并保证该目录下只有一个jar包.jar包的输出文件名为"nohup.当前目录名" 运行jar包: 脚本名后跟start|stop|restart|status即可 脚本内容: #!/bin/bash ####################### #脚本使用方法: #本脚本和jar包在同一目录下,保证当前目录有且只有一个jar包即可.无需修改任何东西. # Usage: $0 {start|stop|status|re

jar包启动失败 java Name or service not known解决方案

本人在生产环境中的一台机器使用了写好的jar包的启动脚本发现启动不了jar包,然后自己使用java命令单独启动jar包,出现以下报错 [email protected]:/etc/init.d# java -Dfile.encoding=UTF-8 -Xmx2048M -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=30113 -Dcom.sun.management.jmxremote.authenticat

Ops:jar包启动关闭脚本

目录 简介 环境介绍 start.sh启动脚本 stop.sh关闭脚本 参考文档 简介 公司开发架构为java语言的rpc dubbo架构,将功能分解为各个模块,模块较多,发布到环境上的应用为编译后的jar包和配置文件,以及启动关闭jar包的shell脚本.之前经常会出现进程启动不了,或程序启动了多个的情况,此次,做了优化,结构比较严谨,代码量少,就不放到github上了,在这里做个分享,希望对你有用. 环境介绍 此脚步使用场景需要标准化环境的要求,所有jar皆可使用该脚本使用,通用性良好. j

Centos7.2从github拉代码以jar包启动

1,新建一个job 2,配置git下载地址 3,配置build后执行的脚本 4,脚本执行过程会报没有权限,因为jenkins默认用户是jenkins,改成root vi /etc/sysconfig/jenkins 5,脚本如下: echo "脚本开始执行"path=$1cd $pathfilename=$(ls *jar)echo $filenameecho "杀死原来的进程开始"pid=`ps -ef | grep $filename | grep -v gre

jar包部署脚本

部署一个名为xxx的jar包,输出到out.log,只需要准备以下脚本start.sh #!/bin/sh echo " =====关闭Java应用======" PROCESS=`ps -ef |grep java |grep -v grep|grep xxx.jar|awk '{print $2}'` for i in $PROCESS do echo "Kill the $1 process [ $i ]" kill -9 $i done echo "

使用assembly打出的独立可执行jar包启动时报错spring错误的解决方法

项目开发使用dubbo,想把服务打成可执行jar包,并将所有的依赖也打包到这个jar文件中,工程依赖使用了spring等,在使用maven的assembly打包成独立可执行的jar包后,在执行时报如下错误:Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace      网上对这个问题也有提及,这是assembly的一个bug.参见:http://jira.codehaus.

Spring Boot(2):通过jar包启动

我们通过创建一个可以在Production env中运行的完全自包含的可执行jar文件来完成我们的示例.可执行jar(有时也称为"fat jars")是包含您编译的类以及您的代码需要运行的所有jar依赖项的归档文件. 本例是在 Spring Boot(1):Guide 的基础上继续写的. (1) 在Maven中添加以下依赖: 1 <!-- 可以打成可运行的jar包 --> 2 <build> 3 <plugins> 4 <plugin>

【调试】Idea如何远程debug之SpringBoot jar包启动

一.Java -jar启动添加如下参数 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9852 -Xdebug是通知JVM工作在DEBUG模式下(这里不加也是可以的) -Xrunjdwp是通知JVM使用(java debug wire protocol)来运行调试环境 transport指定了调试数据的传送方式,dt_socket是指用SOCKET模式 server参数是指是否支持在server模式的VM中 su

jar包重启脚本-restart.sh

#!/bin/sh PROJECT_PATH=/var/www/ PROJECT_NAME=demo.jar PROJECT_ALL_LOG_NAME=logs/demo-all.log # stop process tpid=`ps -ef|grep $PROJECT_NAME|grep -v grep|grep -v kill|awk '{print $2}'` if [ ${tpid} ]; then echo 'Stop Process...' # 是先关闭和其有关的程序,再将其关闭 k