`
jiakechong
  • 浏览: 202799 次
社区版块
存档分类
最新评论

linux脚本(让JAR的config放在外边)

阅读更多
linux脚本(让JAR的config放在外边)

http://hi.baidu.com/liwei_8/blog/item/d9d31f256f274e6434a80f2c.html



linux脚本(让JAR的config放在外边)
2007年12月27日 星期四 10:41
比如您的JAR name为: DatabaseCacheDaemon0510.jar

将此run.sh文件放入JAR的同目录

#!/bin/sh
### ====================================================================== ###
##                                                                          ##
## Daemon Bootstrap Script                                                 ##
##                                                                          ##
### ====================================================================== ###

DIRNAME=`dirname $0`
PROGNAME=`basename $0`
GREP="grep"

# Use the maximum available, or set MAX_FD != -1 to use that
MAX_FD="maximum"

#
# Helper to complain.
#
warn() {
    echo "${PROGNAME}: $*"
}

#
# Helper to puke.
#
die() {
    warn $*
    exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false;
darwin=false;
linux=false;
case "`uname`" in
    CYGWIN*)
        cygwin=true
        ;;

    Darwin*)
        darwin=true
        ;;
       
    Linux)
        linux=true
        ;;
esac

# Read an optional running configuration file
if [ "x$RUN_CONF" = "x" ]; then
    RUN_CONF="$DIRNAME/run.conf"
fi
if [ -r "$RUN_CONF" ]; then
    . "$RUN_CONF"
fi

# Force IPv4 on Linux systems since IPv6 doesn't work correctly with jdk5 and lower
if [ "$linux" = "true" ]; then
   JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
    [ -n "$DAEMON_HOME" ] &&
        DAEMON_HOME=`cygpath --unix "$DAEMON_HOME"`
    [ -n "$JAVA_HOME" ] &&
        JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
    [ -n "$JAVAC_JAR" ] &&
        JAVAC_JAR=`cygpath --unix "$JAVAC_JAR"`
fi

# Setup DAEMON_HOME
if [ "x$DAEMON_HOME" = "x" ]; then
    # get the full path (without any relative bits)
    DAEMON_HOME=`pwd`
fi
export DAEMON_HOME

# Increase the maximum file descriptors if we can
if [ "$cygwin" = "false" ]; then
    MAX_FD_LIMIT=`ulimit -H -n`
    if [ $? -eq 0 ]; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
     # use the system max
     MAX_FD="$MAX_FD_LIMIT"
fi

ulimit -n $MAX_FD
if [ $? -ne 0 ]; then
     warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
    else
warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
    fi
fi

# Setup the JVM
if [ "x$JAVA" = "x" ]; then
    if [ "x$JAVA_HOME" != "x" ]; then
JAVA="$JAVA_HOME/bin/java"
    else
JAVA="java"
    fi
fi

# Setup the classpath
#runjar="$DAEMON_HOME/bin/run.jar"
#if [ ! -f "$runjar" ]; then
#    die "Missing required file: $runjar"
#fi
#DAEMON_BOOT_CLASSPATH="$runjar"

DIRLIBS=`ls $DAEMON_HOME/*.jar`

for i in ${DIRLIBS}; do
    if [ "$i" != "${DIRLIBS}" ] ; then
if [ -z "$LOCALCLASSPATH" ] ; then
     LOCALCLASSPATH=$i
else
     LOCALCLASSPATH="$i":$LOCALCLASSPATH
fi
    fi
done

    # For Cygwin, switch paths to Windows format before running java
if $cygwin; then
    LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
fi

DAEMON_CLASSPATH=.:$LOCALCLASSPATH


if [ "x$JAVAC_JAR" = "x" ]; then
    JAVAC_JAR_FILE="$JAVA_HOME/lib/tools.jar"
else
    JAVAC_JAR_FILE="$JAVAC_JAR"
fi
if [ ! -f "$JAVAC_JAR_FILE" ]; then
   # MacOSX does not have a seperate tools.jar
   if [ "$darwin" != "true" -a "x$JAVAC_JAR" != "x" ]; then
      warn "Missing file: JAVAC_JAR=$JAVAC_JAR"
      warn "Unexpected results may occur."
   fi
   JAVAC_JAR_FILE=
fi

if [ "x$DAEMON_CLASSPATH" = "x" ]; then
    DAEMON_CLASSPATH="$DAEMON_BOOT_CLASSPATH"
else
    DAEMON_CLASSPATH="$DAEMON_CLASSPATH:$DAEMON_BOOT_CLASSPATH"
fi
if [ "x$JAVAC_JAR_FILE" != "x" ]; then
    DAEMON_CLASSPATH="$DAEMON_CLASSPATH:$JAVAC_JAR_FILE"
fi

# If -server not set in JAVA_OPTS, set it, if supported
SERVER_SET=`echo $JAVA_OPTS | $GREP "\-server"`
if [ "x$SERVER_SET" = "x" ]; then

    # Check for SUN(tm) JVM w/ HotSpot support
    if [ "x$HAS_HOTSPOT" = "x" ]; then
HAS_HOTSPOT=`"$JAVA" -version 2>&1 | $GREP -i HotSpot`
    fi

    # Enable -server if we have Hotspot, unless we can't
    if [ "x$HAS_HOTSPOT" != "x" ]; then
# MacOS does not support -server flag
if [ "$darwin" != "true" ]; then
     JAVA_OPTS="-server $JAVA_OPTS"
fi
    fi
fi

# Setup Daemon Native library path
DAEMON_NATIVE_DIR="$DAEMON_HOME/bin/native"
if [ -d "$DAEMON_NATIVE_DIR" ]; then
    if $cygwin ; then
        export PATH="$DAEMON_NATIVE_DIR:$PATH"
        DAEMON_NATIVE_DIR=`cygpath --dos "$DAEMON_NATIVE_DIR"`
    fi
    if [ "x$LD_LIBRARY_PATH" = "x" ]; then
        LD_LIBRARY_PATH="$DAEMON_NATIVE_DIR"
    else
        LD_LIBRARY_PATH="$DAEMON_NATIVE_DIR:$LD_LIBRARY_PATH"
    fi
    export LD_LIBRARY_PATH
    if [ "x$JAVA_OPTS" = "x" ]; then
        JAVA_OPTS="-Djava.library.path=$DAEMON_NATIVE_DIR"
    else
        JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$DAEMON_NATIVE_DIR"
    fi
fi

# Setup Daemon sepecific properties
JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"

# Setup the java endorsed dirs
DAEMON_ENDORSED_DIRS="$DAEMON_HOME/lib/endorsed"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
    DAEMON_HOME=`cygpath --path --windows "$DAEMON_HOME"`
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
    DAEMON_CLASSPATH=`cygpath --path --windows "$DAEMON_CLASSPATH"`
    DAEMON_ENDORSED_DIRS=`cygpath --path --windows "$DAEMON_ENDORSED_DIRS"`
fi

# Display our environment
echo "========================================================================="
echo ""
echo " Daemon Bootstrap Environment"
echo ""
echo " DAEMON_HOME: $DAEMON_HOME"
echo ""
echo " JAVA: $JAVA"
echo ""
echo " JAVA_OPTS: $JAVA_OPTS"
echo ""
echo " CLASSPATH: $DAEMON_CLASSPATH"
echo ""
echo "========================================================================="
echo ""

while true; do
   if [ "x$LAUNCH_DAEMON_IN_BACKGROUND" = "x" ]; then
      # Execute the JVM in the foreground
      "$JAVA" $JAVA_OPTS \
   -Djava.rmi.server.codebase=file:///$DAEMON_HOME/DatabaseCacheDaemon0510.jar \
          -Djava.endorsed.dirs="$DAEMON_ENDORSED_DIRS" \
          -classpath "$DAEMON_CLASSPATH":DatabaseCacheDaemon0510.jar \
         "$@"
      DAEMON_STATUS=$?
   else
      # Execute the JVM in the background
      "$JAVA" $JAVA_OPTS \
   -Djava.rmi.server.codebase=file:///$DAEMON_HOME/DatabaseCacheDaemon0510.jar \
          -Djava.endorsed.dirs="$DAEMON_ENDORSED_DIRS" \
          -classpath "$DAEMON_CLASSPATH" \
         "$@" &
      DAEMON_PID=$!
      # Trap common signals and relay them to the daemon process
      trap "kill -HUP $DAEMON_PID" HUP
      trap "kill -TERM $DAEMON_PID" INT
      trap "kill -QUIT $DAEMON_PID" QUIT
      trap "kill -PIPE $DAEMON_PID" PIPE
      trap "kill -TERM $DAEMON_PID" TERM
      # Wait until the background process exits
      WAIT_STATUS=0
      while [ "$WAIT_STATUS" -ne 127 ]; do
         DAEMON_STATUS=$WAIT_STATUS
         wait $DAEMON_PID 2>/dev/null
         WAIT_STATUS=$?
      done
   fi

   if [ $DAEMON_STATUS -eq 10 ]; then
      echo "Restarting Daemon..."
   else
      exit $DAEMON_STATUS
   fi
done

最后运行您程序中的主类. 如./run.sh com.infobank.superchannel.daemon.databasecache.DatabaseCacheDaemon &
分享到:
评论

相关推荐

    centos7下启动springboot项目启动脚本(shell脚本)

    前言:打包好的springboot项目,可以使用java -jar xxx.jar的方式启动。当出现多个springboot项目需要启动的时候...export CONFIG=ruoyi-config-1.0.2-SNAPSHOT.jar export AUTH=ruoyi-auth-1.0.2-SNAPSHOT.jar export

    JmeterTemplate:用于生成测试用例、jmeter的测试脚本以及测试脚本使用到的测试数据

    将command包下面的两个运行脚本拷贝到与jar包、config配置文件夹同级别的目录下 文件的级别大致为 最外层文件夹 run.sh (linux环境运行此命令,为文件添加执行权限后运行 ./run.sh) run.bat (windows环境运行该命令...

    zookeeper配置内容导入导出工具

    一款好用的zookeeper配置内容导入导出工具,适用平台是windows,但是也可以修改run.bat为shell脚本,适合linux。 带图形界面,修改config中的config.xml,添加需要管理的zookeeper地址信息,同时可以定义两个用户...

    基于springboot、jmeter的测试平台,通过web创建测试计划并执行,查看运行报告+源代码+文档说明

    对于linux操作系统,需要新建配置文件 `JMETER_HOME.config` ,填入jmeter安装目录,例如`/usr/local/apache-jmeter-3.2`,跟jar文件放在同一目录下。 ### 运行 java -jar testing_platform-0.1-SNAPSHOT.jar ...

    weblogic集群部署文档.docx

    2.进入bin目录编写bat执行脚本 ,新建startNodes_1.bat 和startProxy_server.bat 文件 startNodes_1.bat 内容: startManagedWebLogic.cmd nodes_1 startProxy_server.bat 内容: startManagedWebLogic.cmd proxy_...

    executor:LXC 容器化支持的 Garrit 执行能力

    用法复制一份 : cp config-example.yml config.yml并根据需要对其进行自定义: editor config.yml至少,您需要更改negotiator和problems属性以分别指示协商器端点和存储问题集的目录。 然后,启动执行程序: java -...

    (LED) 矩阵控制软件,支持各种硬件,关键词:LED Matrix, OSC, Realtime, VJ, Arduino,

    您可以通过双击使用集成 GUI 启动 PixelController,也可以通过执行(OSX/Linux) 或(Windows) 脚本来启动 PixelControllerPixelController.jar的控制台版本(例如在 Raspberry PI 上) 。console\PixelController....

    chef-embulk:栓子厨师食谱

    平台的Ubuntu CentOS的6 亚马逊Linux属性node[:embulk][:bin] -嵌入包装器脚本路径。 node[:embulk][:jar] -插入jar文件的路径。 node[:embulk][:download_uri] -插入jar文件的URL。 node[:embulk][:lib_dir] -插入...

    dam:基于java nio的httpserver

    \bin—— 内包含windows平台启动批处理文件run.bat或linux平台启动shell脚本run.sh \config—— 基本配置文件 \lib—— 服务器运行jar包 \logs—— 日志文件 \temp—— 临时文件 \www——web apps 目录文件 \README....

    Cubic java应用诊断工具-其他

    目录结构:agent-dist 存放打包的agent.jar(打包后出现)agent-proxy-dist 存放打包的proxy.jar(打包后出现)arthas-dist 用于支持arthas命令集config agent配置文件cubic-agent agent startcubic-core agent核心cubic...

    JMeter操作手册大全.docx

    从35个方面对Jmeter从原理到实际演示,一册在手,天下我有 1.性能测试基本概念 1.1.RT -Response time 请求响应时间 从客户端发出请求到得到响应的整个时间 一般包括网络响应时间+server的响应...配置元件(Config E

    fourinone-3.04.25

    class和jar包只需放在工头机器上, 各工人机器会自动获取并执行,兼容操作系统,不需要进行安全密钥复杂配置 三、网络波动状况下的策略处理,设置抢救期,抢救期内网络稳定下来不判定结点死亡 fourinone-3.04.25...

    java 面试题 总结

    Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...

    网管教程 从入门到精通软件篇.txt

    JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:Java源文件 JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:Java源文件 JFF,JFIF,JIF:JPEG文件 JPE,JPEG,JPG:JPEG图形...

    超级有影响力霸气的Java面试题大全文档

     Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常...

    单点登录源码

    ├── zheng-config -- 配置中心[端口:1001] ├── zheng-upms -- 用户权限管理系统 | ├── zheng-upms-common -- upms系统公共模块 | ├── zheng-upms-dao -- 代码生成模块,无需开发 | ├── zheng-upms-...

Global site tag (gtag.js) - Google Analytics