java通用启动脚本

#!/bin/bash
AppName=xxx.jar
APP_HOME=${pwd}/$AppName

#JVM参数
# -Xms:指定jvm堆的初始大小,默认为物理内存的1/64,可指定单位k,m,默认为字节
# -Xmx:指定jvm堆的最大值,默认为物理内存的1/4,单位与-Xms一致,通常将-Xms和-Xmx设置相同的值,目的是为了在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区大小而浪费资源
# -XX:NewSize:设置新生对象能占用内存的初始大小
# -XX:MaxNewSize:设置新生代能占用内存的最大值,这个值小于-Xmx
# -XX:SurvivorRatio:新生代中survivor区和eden区的比例
# -XX:NewRatio:新生代内存容量与老生代内存容量的比例
# -XX:PermSize:表示非堆区初始内存分配大小
# -XX:MaxPermSize:表示非堆区内存上限
# -XX:+HeapDumpOnOutOfMemoryError:当首次遭遇OOM(OutOfMemoryError)时导出此时堆中信息
# -XX:+PrintGCDateStamps:输出GC的时间戳
# -XX:+PrintGCDetails:输出详细GC日志
# -XX:+UseParallelGC:启用并行GC
# -Xss:设置每个线程的堆栈大小
# 远程调试需安装远程调试jar 使用命令  -agentlib:jdwp=transport=dt_socket,server=y,address=8888,suspend=n
JVM_OPTS="$APP_HOME -Xms1024M -Xmx1024M -XX:PermSize:512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails  -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -agentlib:jdwp=transport=dt_socket,server=y,address=8888,suspend=n"

if [ "$1" = "" ];
then
	echo -e "\033[0;31m 未输入操作名 \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(){
	OLDOID=$(ps -ef|grep java|grep $AppName|grep -v grep|awk '{print $2}')
	if [ x"$OLDOID" != x"" ];then
		echo "$AppName is running..."
		exit
	else
	#标准输出和错误写入到app.log日志文件中
	nohup java -jar $JVM_OPTS >app.log 2>error.log $
	echo "start $AppName..."
	fi
	
	PID=$(ps -ef|grep java|grep $AppName|grep -v grep|awk '{print $2}')
	if [ x"$PID" = x"" ];then
		echo "$AppName start fail"
		exit
	else
		echo "$AppName start 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 -9 $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(){
	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	
	

	

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值