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

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

    Linux利用Shell脚本部署jar包项目的完整步骤

    在Linux环境中,自动化部署Java应用程序通常使用Shell脚本来实现,特别是对于包含jar包的应用,这种方法既高效又方便。本文将详细介绍如何使用Shell脚本在Linux上部署jar包项目。 首先,确保你的系统已经安装了Java...

    linux下jdk安装脚本

    在压缩包`linux_jdk_config`中,可能包含了这个安装脚本和相关配置文件,如已经修改好的环境变量模板。通过分析这个压缩包,我们可以学习到自动化部署JDK的具体方法,这对于大规模服务器管理和持续集成流程非常有...

    apollo-configservice-1.6.1-github.zip

    apollo-configservice-1.6.1.jar 是阿波罗配置中心服务的可执行JAR包,包含了服务的全部代码和依赖。使用Java的JAR命令或者集成开发环境(IDE)可以直接运行这个JAR文件来启动服务。 apollo-configservice-1.6.1-...

    linux切换JDK脚本

    ### Linux下JDK版本切换脚本详解 #### 背景与需求 在软件开发过程中,尤其是进行Java项目开发时,经常会遇到不同项目对JDK版本的要求各不相同的情况。例如,某些旧项目可能需要使用JDK 1.6进行编译和运行,而新...

    java通过代码登录远程linux服务器并执行linux命令源码以及jar包

    总的来说,Java通过JSch库远程登录Linux服务器并执行命令,是Java与Linux系统交互的一种常用方式,尤其适用于自动化运维和脚本化的任务。通过理解并实践这些代码,你将能够更好地理解和掌握Java进行远程操作的能力。

    Linux下shell通用脚本启动jar(微服务)

    本文将深入讲解如何编写一个Linux下的shell通用脚本,用于启动jar包封装的微服务。 首先,我们需要创建一个名为`app_jar.sh`的shell脚本。脚本的第一行`#!/bin/bash`是shebang,指定脚本使用的解释器为bash。接着,...

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    Java通过ganymed-ssh2-build210.jar库实现SSH远程连接Linux终端是一个常见的应用场景,主要用于自动化运维、系统管理或者开发过程中需要与Linux服务器交互的场景。ganymed-ssh2-build210.jar是Java的一个开源SSH库,...

    java操作linux工具包

    Java 操作 Linux 工具包是一系列用于在 Java 应用程序中与 Linux 系统进行交互的库和工具。这些工具通常包括命令行执行、文件传输、进程管理、系统监控等功能,使得开发者无需深入了解 Linux 命令行语法就能在 Java ...

    apollo-configservice-1.7.0-github.zip

    `scripts`目录可能包含启动、停止、重启等操作的脚本,通常这些脚本是为Linux或Unix环境编写的,使用shell语言,便于管理和操作Apollo配置服务。 `config`目录通常会包含一些默认配置文件或者示例配置,例如数据库...

    应用Jar包部署文档1

    本文档详细介绍了如何在Linux环境下部署一个基于Spring Boot的Java应用程序,该应用程序的jar包名为`xxx-app-full.jar`。以下是对各个步骤的详细说明: 1. **Jar包目录结构** 在部署过程中,我们首先需要创建一个...

    jspAgent_linux_was.zip

    【标题】"jspAgent_linux_was.zip" 是一个专门为Websphere应用程序服务器设计的安全防护插件的压缩包。这个插件的主要目标是对G01网站漏洞进行高级防护和基础防护,确保Web服务的安全运行。 【描述】中提到,该...

    最新版linux elasticsearch-7.14.0-linux-x86_64.tar.gz

    1. `bin/` 目录:包含启动和停止Elasticsearch的脚本,如`elasticsearch`和`elasticsearch.bat`(用于Windows)。`elasticsearch-service.bat`和`elasticsearch-service-x64.exe`是Windows服务管理工具。 2. `...

    run jar with ini settings

    这涉及到Java应用程序的启动方式,特别是通过命令行工具,如Windows下的批处理文件或者Linux/Unix的Shell脚本。`.ini`文件是一种常见的配置文件格式,它允许用户或开发者存储应用程序的配置参数,以便在运行时读取和...

    apollo-configservice-2.0.1-github.zip

    在Linux或Unix环境中,这些脚本可以简化服务的管理操作。例如,"start.sh"用于启动服务,"stop.sh"用于停止服务,而"restart.sh"则是重启服务。 总体来看,这个压缩包提供了启动和运行Apollo配置服务所需要的所有...

    JBoss Config GUI : Version 0.6.0 Beta 4

    1. `run.bat` 和 `run.sh`:这两个脚本分别用于Windows和Unix/Linux系统启动JBoss Config GUI。它们封装了启动命令,使得用户可以直接运行程序,无需手动配置环境。 2. `JBoss_Config_GUI.jar`:这是主应用程序的...

    Weblogic for Linux部署配置手册

    在Linux环境下,创建域可能涉及设置环境变量,运行`createDomain.sh`脚本,并根据需求配置域的参数。 总体而言,这份手册涵盖了Weblogic在Linux环境下的基础操作,包括安装、部署、配置和安全管理。对于那些需要在...

    zookeeper配置内容导入导出工具

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

    Linux部署java程序步骤

    - 使用`catalina.sh`脚本启动服务,该脚本通常位于`$CATALINA_HOME/bin`目录下。 #### 3. 配置Java虚拟机(JVM)选项 为了优化Java程序的性能,还可以通过`JAVA_OPTS`环境变量来指定JVM参数。 - 示例:`JAVA_OPTS=...

Global site tag (gtag.js) - Google Analytics