#start.sh
MAIN_CLASS=$1
#函数声明
usage() {
echo "please set startup Args String"
exit 1;
}
#注意中括号两边需要加空格,$#表示传入参数的个数,-lt表示转义的小于号,在右括号外边有个分号;
if [ $# -lt 3 ]; then
#调用函数
usage
fi
#等号做相等判断
if [ `whoami` == "root" ]; then
echo DO NOT use root user to launch me.
exit 1;
fi
# $0脚本名字
cd `dirname $0`/..
BASE_DIR="`pwd`"
# 在这里执行echo "$BASE_DIR" 会打印绝对路径,配置文件保存在CONF_DIR目录下
CONF_DIR=$BASE_DIR/conf
# cat 显示文件内容
export JAVA_HOME=`cat $BASE_DIR/bin/javaHome`
export PATH=$JAVA_HOME/bin:$PATH
export LANG=zh_CN.GB18030
# 如果机器和OS支持IPV4和IPV6,JAVA程序倾向于IPV4,那么应用程序使用IPV4
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=64m -Xss1m"
JAVA_OPTS="$JAVA_OPTS -XX:NewSize=128m -XX:MaxNewSize=128m"
# 使用CMS
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
# gc日志配置
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDateStamps"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintClassHistogram"
# gc日志
JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
JAVA_OPTS="$JAVA_OPTS -Xloggc:$BASE_DIR/logs/gc-$TASK_NAME.log"
# 开启远程调试端口
#JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8181,server=y,suspend=y"
# 判断文件是否存在 -f
if [ ! -f "$JAVA_HOME/bin/java" ]; then
echo "请设置JAVA_HOME"
exit 1;
fi
LOG_PATH=$BASE_DIR/logs
START_LOG=$LOG_PATH/start.log
#init logPath and logFile, 判断是否存在目录
if [ ! -d "$LOG_PATH" ]; then
mkdir $LOG_PATH
fi
# 启动的日志文件
if [ ! -f "$START_LOG" ]; then
#等于 mk 创建文件
touch $START_LOG
fi
#Start Java Process
#标准的输入,输出和错误输出分别表示为STDIN,STDOUT,STDERR,也可以用0,1,2来表示。
#command 2>&1 | ...: command的错误重定向到标准输出,错误和标准输出都通过管道传给下个命令。
# $ cat test.sh >> test 2>&1 把文件test.sh的内容append到文件test
#最后一个&表示当前shell到后台运行,类似于nohup
#如果不加&使用控制台调用自己的脚本,脚本调用java java相当于终端的孙进程,关闭控制台,脚本进程和java进程都退出了
$JAVA_HOME/bin/java $JAVA_OPTS -classpath $CONF_DIR:$CLASSPATH:. $MAIN_CLASS >> $START_LOG 2>&1 &
#!/bin/sh
# -----------------------------------------------------------------------------
# Start Client
#
# $Id: startup.sh Client $
# -----------------------------------------------------------------------------
# Check $JAVA_HOME/bin/java is Exist
if [ ! -f "$JAVA_HOME/bin/java" ]; then
return
fi
# Check $JAVA_HOME/bin/SmsClientYE is Exist
if [ ! -f "$JAVA_HOME/bin/Client" ]; then
cp $JAVA_HOME/bin/java $JAVA_HOME/bin/Client
fi
export LANG=zh_CN.UTF8
LIBPATH="lib"
CLASSPATH="${JAVA_HOME}/jre/lib/rt.jar:${CLASSPATH}"
export CLASSPATH
for i in ${LIBPATH}/*.jar
do
if [ -f "$i" ] ; then
if [ -z "$PATCHCLASSPATH" ] ; then
PATCHCLASSPATH="$i"
else
PATCHCLASSPATH="$i":"$PATCHCLASSPATH"
fi
fi
done
CLASSPATH="${CLASSPATH}:${PATCHCLASSPATH}"
export CLASSPATH
echo classpath=${CLASSPATH}
$JAVA_HOME/bin/Client -server -Xms512m -Xmx2048m -classpath $CLASSPATH net.Main >/dev/null 2>/dev/null &