run.sh#!/bin/sh
function runShell() {
#set jvm heap size
JVM_ARGS="-Xms256M -Xmx1g -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M"
#打印 GC 日志
#JVM_ARGS=${JVM_ARGS}" -XX:+PrintGCDetails -Xloggc:jvm.log -XX:+PrintGCDateStamps "
#when jvm oom, auto generate dump file
JVM_ARGS=${JVM_ARGS}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=sdm_oom.hprof "
#jasypt 加解密
JVM_ARGS=${JVM_ARGS}" -Djasypt.encryptor.password=deviskaifa "
#JVM_ARGS=${JVM_ARGS}" -Djasypt.encryptor.algorithm=PBEWithMD5AndDES "
## 设置临时目录
TMP_DIR=./tmp
if [ ! -d $TMP_DIR ];then
mkdir $TMP_DIR
else
echo tmp dir $TMP_DIR exist
fi
TMP_DIR_ARG=" -Djava.io.tmpdir="${TMP_DIR}
##### 开启 jmx ,方便使用 JVisualVM 监控系统
# -Dcom.sun.management.jmxremote.port=1099 这个是配置远程 connection 的端口号的,要确定这个端口没有被占用
# -Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用 ssl
# -Dcom.sun.management.jmxremote.authenticate=false 指定了 JMX 是否启用鉴权(需要用户名,密码鉴权)
# -Djava.rmi.server.hostname=192.168.1.54 这个是配置 server 的 IP 的
#JVM_ARGS=${JVM_ARGS}" -Djava.rmi.server.hostname=192.168.1.54 -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
### remote debug 开启远程调试
## -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
#JVM_ARGS=${JVM_ARGS}" -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 "
# 获取启动 jar 包
JAR_NAME=`ls | grep jar`
path=$(cd "$(dirname "$0")"; pwd)
cd $path
nohup java ${JVM_ARGS} ${TMP_DIR_ARG} -jar ${JAR_NAME} $1 $2 $3 $4 $5 $6 > /dev/null 2>error.log &
echo $! > tpid
echo Starting...
echo please use tailf logs/*.log to check success or not.
}
if [ ! -f "tpid" ];
then
runShell
else
tpid=$(cat "tpid")
running=$(ps -ef |awk '{print $2}'|grep -w $tpid)
if [ "$running" ];
then
echo "Process(pid:$tpid) is already running."
else
runShell
fi
fi