start-ds revision 536
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp#!/bin/sh
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp#
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp# CDDL HEADER START
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp#
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp# The contents of this file are subject to the terms of the
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp# Common Development and Distribution License, Version 1.0 only
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp# (the "License"). You may not use this file except in compliance
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp# with the License.
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp#
a89ad754cce3cfc8aee71760e10217b54020360dTripp# You can obtain a copy of the license at
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp# trunk/opends/resource/legal-notices/OpenDS.LICENSE
09688ec5ffb8b9cf9883a770e2f9ebd60b28888dTripp# or https://OpenDS.dev.java.net/OpenDS.LICENSE.
a89ad754cce3cfc8aee71760e10217b54020360dTripp# See the License for the specific language governing permissions
a89ad754cce3cfc8aee71760e10217b54020360dTripp# and limitations under the License.
a89ad754cce3cfc8aee71760e10217b54020360dTripp#
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp# When distributing Covered Code, include this CDDL HEADER in each
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp# file and include the License file at
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp# trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
c093c1aed867e18aa4778708592e1ceb45d18cffTripp# add the following below this CDDL HEADER, with the fields enclosed
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp# by brackets "[]" replaced with your own identifying * information:
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp# Portions Copyright [yyyy] [name of copyright owner]
a89ad754cce3cfc8aee71760e10217b54020360dTripp#
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp# CDDL HEADER END
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp#
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp#
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp# Portions Copyright 2006 Sun Microsystems, Inc.
c093c1aed867e18aa4778708592e1ceb45d18cffTripp
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp# See if JAVA_HOME is set. If not, then see if there is a java executable in
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp# the path and try to figure it out.
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippif test -z "${JAVA_BIN}"
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippthen
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp if test -z "${JAVA_HOME}"
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp then
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp JAVA_BIN=`which java 2> /dev/null`
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp if test ${?} -eq 0
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp then
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp export JAVA_BIN
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp else
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp echo "Please set JAVA_HOME to the root of a Java 5.0 installation."
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp exit 1
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp fi
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp else
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp JAVA_BIN=${JAVA_HOME}/bin/java
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp export JAVA_BIN
a89ad754cce3cfc8aee71760e10217b54020360dTripp fi
a89ad754cce3cfc8aee71760e10217b54020360dTrippfi
a89ad754cce3cfc8aee71760e10217b54020360dTripp
a89ad754cce3cfc8aee71760e10217b54020360dTripp
c093c1aed867e18aa4778708592e1ceb45d18cffTripp# Explicitly set the PATH, LD_LIBRARY_PATH, LD_PRELOAD, and other important
a89ad754cce3cfc8aee71760e10217b54020360dTripp# system environment variables for security and compatibility reasons.
a89ad754cce3cfc8aee71760e10217b54020360dTrippPATH=/bin:/usr/bin
a89ad754cce3cfc8aee71760e10217b54020360dTrippLD_LIBRARY_PATH=
a89ad754cce3cfc8aee71760e10217b54020360dTrippLD_LIBRARY_PATH_32=
a89ad754cce3cfc8aee71760e10217b54020360dTrippLD_LIBRARY_PATH_64=
a89ad754cce3cfc8aee71760e10217b54020360dTrippLD_PRELOAD=
a89ad754cce3cfc8aee71760e10217b54020360dTrippLD_PRELOAD_32=
a89ad754cce3cfc8aee71760e10217b54020360dTrippLD_PRELOAD_64=
a89ad754cce3cfc8aee71760e10217b54020360dTrippexport PATH LD_LIBRARY_PATH LD_LIBRARY_PATH_32 LD_LIBRARY_PATH_64 \
a89ad754cce3cfc8aee71760e10217b54020360dTripp LD_PRELOAD LD_PRELOAD_32 LD_PRELOAD_34
a89ad754cce3cfc8aee71760e10217b54020360dTripp
a89ad754cce3cfc8aee71760e10217b54020360dTripp
a89ad754cce3cfc8aee71760e10217b54020360dTripp# Capture the current working directory so that we can change to it later.
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp# Then capture the location of this script and the Directory Server instance
a89ad754cce3cfc8aee71760e10217b54020360dTripp# root so that we can use them to create appropriate paths.
c093c1aed867e18aa4778708592e1ceb45d18cffTrippWORKING_DIR=`pwd`
a89ad754cce3cfc8aee71760e10217b54020360dTripp
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippcd `dirname "${0}"`
a89ad754cce3cfc8aee71760e10217b54020360dTrippSCRIPT_DIR=`pwd`
7947db4b7d8682ea81598e3a4283e659a8103be6Tripp
a89ad754cce3cfc8aee71760e10217b54020360dTrippcd ..
a89ad754cce3cfc8aee71760e10217b54020360dTrippINSTANCE_ROOT=`pwd`
a89ad754cce3cfc8aee71760e10217b54020360dTrippexport INSTANCE_ROOT
a89ad754cce3cfc8aee71760e10217b54020360dTripp
7947db4b7d8682ea81598e3a4283e659a8103be6Trippcd "${WORKING_DIR}"
a89ad754cce3cfc8aee71760e10217b54020360dTripp
a89ad754cce3cfc8aee71760e10217b54020360dTripp
a89ad754cce3cfc8aee71760e10217b54020360dTripp# Configure the appropriate CLASSPATH.
a89ad754cce3cfc8aee71760e10217b54020360dTrippCLASSPATH=${INSTANCE_ROOT}/classes
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippfor JAR in ${INSTANCE_ROOT}/lib/*.jar
a89ad754cce3cfc8aee71760e10217b54020360dTrippdo
c093c1aed867e18aa4778708592e1ceb45d18cffTripp CLASSPATH=${CLASSPATH}:${JAR}
a89ad754cce3cfc8aee71760e10217b54020360dTrippdone
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippexport CLASSPATH
a89ad754cce3cfc8aee71760e10217b54020360dTripp
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp
a89ad754cce3cfc8aee71760e10217b54020360dTripp# Specify the locations of important files that may be used when the server
a89ad754cce3cfc8aee71760e10217b54020360dTripp# is starting.
a89ad754cce3cfc8aee71760e10217b54020360dTrippCONFIG_FILE=${INSTANCE_ROOT}/config/config.ldif
a89ad754cce3cfc8aee71760e10217b54020360dTrippPID_FILE=${INSTANCE_ROOT}/logs/server.pid
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippLOG_FILE=${INSTANCE_ROOT}/logs/server.out
a89ad754cce3cfc8aee71760e10217b54020360dTrippSTARTING_FILE=${INSTANCE_ROOT}/logs/server.starting
a89ad754cce3cfc8aee71760e10217b54020360dTripp
a89ad754cce3cfc8aee71760e10217b54020360dTripp
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp# Specify the script name so that it may be provided in command-line usage.
66ca16dd76367c074fe4df1dcf7b555489a9bf85TrippSCRIPT_NAME_ARG="-Dorg.opends.server.scriptName=start-ds"
66ca16dd76367c074fe4df1dcf7b555489a9bf85Trippexport SCRIPT_NAME_ARG
c093c1aed867e18aa4778708592e1ceb45d18cffTripp
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp# See if an "-N" or a "--nodetach" argument was provided as a command-line
a89ad754cce3cfc8aee71760e10217b54020360dTripp# argument. If it was, then don't use nohup to send to the background, and
a89ad754cce3cfc8aee71760e10217b54020360dTripp# send all output to both the console and a lot file.
a89ad754cce3cfc8aee71760e10217b54020360dTrippNODETACH=0
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippfor ARG in "${@}"
a89ad754cce3cfc8aee71760e10217b54020360dTrippdo
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp if test "${ARG}" = "-N"
a89ad754cce3cfc8aee71760e10217b54020360dTripp then
a89ad754cce3cfc8aee71760e10217b54020360dTripp NODETACH=1
a89ad754cce3cfc8aee71760e10217b54020360dTripp else
a89ad754cce3cfc8aee71760e10217b54020360dTripp ARG=`echo ${ARG} | tr '[A-Z]' '[a-z]'`
a89ad754cce3cfc8aee71760e10217b54020360dTripp if test "${ARG}" = "--nodetach"
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp then
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp NODETACH=1
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp fi
c093c1aed867e18aa4778708592e1ceb45d18cffTripp fi
66ca16dd76367c074fe4df1dcf7b555489a9bf85Trippdone
66ca16dd76367c074fe4df1dcf7b555489a9bf85Tripp
a89ad754cce3cfc8aee71760e10217b54020360dTrippif test ${NODETACH} -eq 1
a89ad754cce3cfc8aee71760e10217b54020360dTrippthen
a89ad754cce3cfc8aee71760e10217b54020360dTripp echo $$ > "${PID_FILE}"
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp rm -f "${PID_FILE}" "${LOG_FILE}"
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp exec "${JAVA_BIN}" ${JAVA_ARGS} ${SCRIPT_NAME_ARG} \
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp org.opends.server.core.DirectoryServer \
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp --configClass org.opends.server.extensions.ConfigFileHandler \
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp --configFile "${CONFIG_FILE}" "${@}"
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippelse
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp touch "${STARTING_FILE}"
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp nohup "${JAVA_BIN}" ${JAVA_ARGS} ${SCRIPT_NAME_ARG} \
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp org.opends.server.core.DirectoryServer \
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp --configClass org.opends.server.extensions.ConfigFileHandler \
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp --configFile "${CONFIG_FILE}" "${@}" > "${LOG_FILE}" 2>&1 &
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp echo $! > "${PID_FILE}"
c093c1aed867e18aa4778708592e1ceb45d18cffTripp "${JAVA_BIN}" -Xms8M -Xmx8M org.opends.server.tools.WaitForFileDelete \
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp --targetFile "${STARTING_FILE}" --logFile "${LOG_FILE}"
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp exit ${?}
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTrippfi
c7ba96d16d58075a9ab8d5c1e46c6c83ce11cb4eTripp