#!/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
java通用启动脚本
最新推荐文章于 2024-04-02 18:25:04 发布