来源于开源项目……

若依脚本

#!/bin/bash

AppName=health-8180.jar

#JVM参数
JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
#JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC -Djava.rmi.server.hostname=47.92.84.122 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3214 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar  -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"

APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log

if [ "$1" = "" ];
then
    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
    exit 1
fi

if [ "$AppName" = "" ];
then
    echo -e "\033[0;31m 未输入应用名 \033[0m"
    exit 1
fi

function start()
{
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

	if [ x"$PID" != x"" ]; then
	    echo "$AppName is running..."
	else
		nohup java -jar  $JVM_OPTS $AppName > /data/health-8180.log 2>&1 &
		echo "Start $AppName success..."
	fi
}

function stop()
{
    echo "Stop $AppName"
	
	PID=""
	query(){
		PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
	}

	query
	if [ x"$PID" != x"" ]; then
		kill -TERM $PID
		echo "$AppName (pid:$PID) exiting..."
		while [ x"$PID" != x"" ]
		do
			sleep 1
			query
		done
		echo "$AppName exited."
	else
		echo "$AppName already stopped."
	fi
}

function restart()
{
    stop
    sleep 2
    start
}

function status()
{
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
    if [ $PID != 0 ];then
        echo "$AppName is running..."
    else
        echo "$AppName is not running..."
    fi
}

case $1 in
    start)
    start;;
    stop)
    stop;;
    restart)
    restart;;
    status)
    status;;
    *)

esac

JVM 参数 JVM_OPTS 解释

JVM_OPTS="
-Dname=$AppName  
-Duser.timezone=Asia/Shanghai 
-Xms512M  # 初始堆大小。
-Xmx512M  # 最大堆大小。下面配置中 -XX:NewRatio=1,即年轻代:老年代=1:1,
  # 堆=年轻代+老年代,则年轻代=老年代=256M。
  # 而且-XX:SurvivorRatio=30,即年轻代中,2*survivor:eden=2:30,
  # 那么survivor=8M,eden=240M
-XX:MetaspaceSize=256M  # 元空间初始值
-XX:MaxMetaspaceSize=512M  # 元空间最大值
-XX:+HeapDumpOnOutOfMemoryError  # 表示当JVM发生OOM(内存溢出)时,自动生成DUMP文件。
-XX:+PrintGCDateStamps  # 日志中打印GC时间
-XX:+PrintGCDetails  # 打印GC详细日志
-XX:NewRatio=1  # 年轻代(eden+2*survivor):老年代=1:1,即年轻代/堆=1/2
-XX:SurvivorRatio=30  # 幸存区(2*survivor):生成区(eden)=2:30,即一个survivor/年轻代=1/16
-XX:+UseParallelGC # 选择垃圾回收器为并行收集器,仅对年轻代有效。可以同时并行多个垃圾收集线程,但此时用户线程需停止
-XX:+UseParallelOldGC # 使用并行收集器+老年代并行
# 开启JConsole监控
-Djava.rmi.server.hostname=47.92.84.122 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=3214 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-jar  
# 开启远程调试
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" 

启动脚本

#!/bin/bash
java -jar /jenkins/jenkins.war --httpPort=8081 >> /jenkins/logs/jenkins.log 2>&1 &


#!/bin/bash
nohup java  -Xms2g -Xmx2g -XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/tmp/voice_server_common/seaway-faas-web.hprof  \
-Dloader.path=/usr/local/soft/voice_server_common/lib  \
-jar /usr/local/soft/voice_server_common/seaway-faas-web.jar \
 > /usr/local/soft/voice_server_common/arthas-output/web.out 2>&1 &

关闭脚本

#!/bin/bash
project="jenkins"
pid=`ps -ef|grep $project|grep -v grep|awk '{printf $2}'`
if test "$pid"
  then 
    echo "killing progress...... pid= " $pid
    kill -9 $pid
    echo "killing project conpleted!"
  else
    echo "this project has not been run."
fi

重启脚本

#!/bin/bash
# shutdown project first
project="jenkins"
pid=`ps -ef | grep $project | grep -v grep | awk '{printf $2}'`
echo "begin to stop project......"
if test "$pid"
  then 
    echo "this project's pid= " $pid
    kill -9 $pid
    echo "stop project completed!"
  else
    echo "the project has not bean started!"
fi
# then startup project
echo "begin to restart project......"
sh /jenkins/runJenkins.sh
newpid=`ps -ef|grep $project|grep -v grep|awk '{printf $2}'`
if test "$pid"
  then 
    echo "restart success!"
  else 
    echo "restart failure!"
fi
Logo

快速构建 Web 应用程序

更多推荐