1259 lines
40 KiB
Bash
Executable File
1259 lines
40 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
# RESOLVE and SET $ES_HOME
|
|
|
|
SCRIPT="$0"
|
|
|
|
# SCRIPT may be an arbitrarily deep series of symlinks. Loop until we have the concrete path.
|
|
while [ -h "$SCRIPT" ] ; do
|
|
ls=`ls -ld "$SCRIPT"`
|
|
# Drop everything prior to ->
|
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
if expr "$link" : '/.*' > /dev/null; then
|
|
SCRIPT="$link"
|
|
else
|
|
SCRIPT=`dirname "$SCRIPT"`/"$link"
|
|
fi
|
|
done
|
|
|
|
# determine elasticsearch home
|
|
ES_HOME=`dirname "$SCRIPT"`/../..
|
|
|
|
# make ELASTICSEARCH_HOME absolute
|
|
export ES_HOME=`cd $ES_HOME; pwd`
|
|
|
|
|
|
# Application
|
|
APP_NAME="elasticsearch"
|
|
APP_LONG_NAME="ElasticSearch"
|
|
|
|
# Wrapper
|
|
WRAPPER_CMD="$ES_HOME/bin/service/exec/elasticsearch"
|
|
WRAPPER_CONF="$ES_HOME/bin/service/elasticsearch.conf"
|
|
|
|
# Priority at which to run the wrapper. See "man nice" for valid priorities.
|
|
# nice is only used if a priority is specified.
|
|
PRIORITY=
|
|
|
|
# Location of the pid file.
|
|
PIDDIR="."
|
|
|
|
# If uncommented, causes the Wrapper to be shutdown using an anchor file.
|
|
# When launched with the 'start' command, it will also ignore all INT and
|
|
# TERM signals.
|
|
#IGNORE_SIGNALS=true
|
|
|
|
# Wrapper will start the JVM asynchronously. Your application may have some
|
|
# initialization tasks and it may be desirable to wait a few seconds
|
|
# before returning. For example, to delay the invocation of following
|
|
# startup scripts. Setting WAIT_AFTER_STARTUP to a positive number will
|
|
# cause the start command to delay for the indicated period of time
|
|
# (in seconds).
|
|
#
|
|
WAIT_AFTER_STARTUP=0
|
|
|
|
# If set, wait for the wrapper to report that the daemon has started
|
|
WAIT_FOR_STARTED_STATUS=true
|
|
WAIT_FOR_STARTED_TIMEOUT=120
|
|
|
|
# If set, the status, start_msg and stop_msg commands will print out detailed
|
|
# state information on the Wrapper and Java processes.
|
|
#DETAIL_STATUS=true
|
|
|
|
# If specified, the Wrapper will be run as the specified user.
|
|
# IMPORTANT - Make sure that the user has the required privileges to write
|
|
# the PID file and wrapper.log files. Failure to be able to write the log
|
|
# file will cause the Wrapper to exit without any way to write out an error
|
|
# message.
|
|
# NOTE - This will set the user which is used to run the Wrapper as well as
|
|
# the JVM and is not useful in situations where a privileged resource or
|
|
# port needs to be allocated prior to the user being changed.
|
|
#RUN_AS_USER=
|
|
|
|
# The following two lines are used by the chkconfig command. Change as is
|
|
# appropriate for your application. They should remain commented.
|
|
# chkconfig: 2345 20 80
|
|
# description: ElasticSearch
|
|
|
|
# When installing on On Mac OSX platforms, the following domain will be used to
|
|
# prefix the plist file name.
|
|
PLIST_DOMAIN=org.elasticsearch
|
|
|
|
# Initialization block for the install_initd and remove_initd scripts used by
|
|
# SUSE linux distributions.
|
|
### BEGIN INIT INFO
|
|
# Provides: elasticsearch
|
|
# Required-Start: $local_fs $network $syslog
|
|
# Should-Start:
|
|
# Required-Stop:
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: ElasticSearch
|
|
# Description: Open Source, Distributed, RESTful, Search Engine
|
|
### END INIT INFO
|
|
|
|
# Do not modify anything beyond this point
|
|
#-----------------------------------------------------------------------------
|
|
|
|
# Required for HP-UX Startup
|
|
if [ `uname -s` = "HP-UX" -o `uname -s` = "HP-UX64" ] ; then
|
|
PATH=$PATH:/usr/bin
|
|
fi
|
|
|
|
# Get the fully qualified path to the script
|
|
case $0 in
|
|
/*)
|
|
SCRIPT="$0"
|
|
;;
|
|
*)
|
|
PWD=`pwd`
|
|
SCRIPT="$PWD/$0"
|
|
;;
|
|
esac
|
|
|
|
# Resolve the true real path without any sym links.
|
|
CHANGED=true
|
|
while [ "X$CHANGED" != "X" ]
|
|
do
|
|
# Change spaces to ":" so the tokens can be parsed.
|
|
SAFESCRIPT=`echo $SCRIPT | sed -e 's; ;:;g'`
|
|
# Get the real path to this script, resolving any symbolic links
|
|
TOKENS=`echo $SAFESCRIPT | sed -e 's;/; ;g'`
|
|
REALPATH=
|
|
for C in $TOKENS; do
|
|
# Change any ":" in the token back to a space.
|
|
C=`echo $C | sed -e 's;:; ;g'`
|
|
REALPATH="$REALPATH/$C"
|
|
# If REALPATH is a sym link, resolve it. Loop for nested links.
|
|
while [ -h "$REALPATH" ] ; do
|
|
LS="`ls -ld "$REALPATH"`"
|
|
LINK="`expr "$LS" : '.*-> \(.*\)$'`"
|
|
if expr "$LINK" : '/.*' > /dev/null; then
|
|
# LINK is absolute.
|
|
REALPATH="$LINK"
|
|
else
|
|
# LINK is relative.
|
|
REALPATH="`dirname "$REALPATH"`""/$LINK"
|
|
fi
|
|
done
|
|
done
|
|
|
|
if [ "$REALPATH" = "$SCRIPT" ]
|
|
then
|
|
CHANGED=""
|
|
else
|
|
SCRIPT="$REALPATH"
|
|
fi
|
|
done
|
|
|
|
# Change the current directory to the location of the script
|
|
cd "`dirname "$REALPATH"`"
|
|
REALDIR=`pwd`
|
|
|
|
# If the PIDDIR is relative, set its value relative to the full REALPATH to avoid problems if
|
|
# the working directory is later changed.
|
|
FIRST_CHAR=`echo $PIDDIR | cut -c1,1`
|
|
if [ "$FIRST_CHAR" != "/" ]
|
|
then
|
|
PIDDIR=$REALDIR/$PIDDIR
|
|
fi
|
|
# Same test for WRAPPER_CMD
|
|
FIRST_CHAR=`echo $WRAPPER_CMD | cut -c1,1`
|
|
if [ "$FIRST_CHAR" != "/" ]
|
|
then
|
|
WRAPPER_CMD=$REALDIR/$WRAPPER_CMD
|
|
fi
|
|
# Same test for WRAPPER_CONF
|
|
FIRST_CHAR=`echo $WRAPPER_CONF | cut -c1,1`
|
|
if [ "$FIRST_CHAR" != "/" ]
|
|
then
|
|
WRAPPER_CONF=$REALDIR/$WRAPPER_CONF
|
|
fi
|
|
|
|
# Process ID
|
|
ANCHORFILE="$PIDDIR/$APP_NAME.anchor"
|
|
STATUSFILE="$PIDDIR/$APP_NAME.status"
|
|
JAVASTATUSFILE="$PIDDIR/$APP_NAME.java.status"
|
|
PIDFILE="$PIDDIR/$APP_NAME.pid"
|
|
LOCKDIR="/var/lock/subsys"
|
|
LOCKFILE="$LOCKDIR/$APP_NAME"
|
|
pid=""
|
|
|
|
# Resolve the location of the 'ps' command
|
|
PSEXE="/usr/ucb/ps"
|
|
if [ ! -x "$PSEXE" ]
|
|
then
|
|
PSEXE="/usr/bin/ps"
|
|
if [ ! -x "$PSEXE" ]
|
|
then
|
|
PSEXE="/bin/ps"
|
|
if [ ! -x "$PSEXE" ]
|
|
then
|
|
echo "Unable to locate 'ps'."
|
|
echo "Please report this message along with the location of the command on your system."
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Resolve the os
|
|
DIST_OS=`uname -s | tr [A-Z] [a-z] | tr -d ' '`
|
|
case "$DIST_OS" in
|
|
'sunos')
|
|
DIST_OS="solaris"
|
|
;;
|
|
'hp-ux' | 'hp-ux64')
|
|
# HP-UX needs the XPG4 version of ps (for -o args)
|
|
DIST_OS="hpux"
|
|
UNIX95=""
|
|
export UNIX95
|
|
;;
|
|
'darwin')
|
|
DIST_OS="macosx"
|
|
;;
|
|
'unix_sv')
|
|
DIST_OS="unixware"
|
|
;;
|
|
'os/390')
|
|
DIST_OS="zos"
|
|
;;
|
|
esac
|
|
|
|
# Resolve the architecture
|
|
if [ "$DIST_OS" = "macosx" ]
|
|
then
|
|
DIST_ARCH="universal"
|
|
APP_PLIST_BASE=${PLIST_DOMAIN}.${APP_NAME}
|
|
APP_PLIST=${APP_PLIST_BASE}.plist
|
|
else
|
|
DIST_ARCH=
|
|
DIST_ARCH=`uname -p 2>/dev/null | tr [A-Z] [a-z] | tr -d ' '`
|
|
if [ "X$DIST_ARCH" = "X" ]
|
|
then
|
|
DIST_ARCH="unknown"
|
|
fi
|
|
if [ "$DIST_ARCH" = "unknown" ]
|
|
then
|
|
DIST_ARCH=`uname -m 2>/dev/null | tr [A-Z] [a-z] | tr -d ' '`
|
|
fi
|
|
case "$DIST_ARCH" in
|
|
'athlon' | 'i386' | 'i486' | 'i586' | 'i686')
|
|
DIST_ARCH="x86"
|
|
if [ "${DIST_OS}" = "solaris" ] ; then
|
|
DIST_BITS=`isainfo -b`
|
|
else
|
|
DIST_BITS="32"
|
|
fi
|
|
;;
|
|
'amd64' | 'x86_64')
|
|
DIST_ARCH="x86"
|
|
DIST_BITS="64"
|
|
;;
|
|
'ia32')
|
|
DIST_ARCH="ia"
|
|
DIST_BITS="32"
|
|
;;
|
|
'ia64' | 'ia64n' | 'ia64w')
|
|
DIST_ARCH="ia"
|
|
DIST_BITS="64"
|
|
;;
|
|
'ip27')
|
|
DIST_ARCH="mips"
|
|
DIST_BITS="32"
|
|
;;
|
|
'power' | 'powerpc' | 'power_pc' | 'ppc64')
|
|
if [ "${DIST_ARCH}" = "ppc64" ] ; then
|
|
DIST_BITS="64"
|
|
else
|
|
DIST_BITS="32"
|
|
fi
|
|
DIST_ARCH="ppc"
|
|
if [ "${DIST_OS}" = "aix" ] ; then
|
|
if [ `getconf KERNEL_BITMODE` -eq 64 ]; then
|
|
DIST_BITS="64"
|
|
else
|
|
DIST_BITS="32"
|
|
fi
|
|
fi
|
|
;;
|
|
'pa_risc' | 'pa-risc')
|
|
DIST_ARCH="parisc"
|
|
if [ `getconf KERNEL_BITS` -eq 64 ]; then
|
|
DIST_BITS="64"
|
|
else
|
|
DIST_BITS="32"
|
|
fi
|
|
;;
|
|
'sun4u' | 'sparcv9' | 'sparc')
|
|
DIST_ARCH="sparc"
|
|
DIST_BITS=`isainfo -b`
|
|
if [ ! -f /usr/lib/libm.so.2 -a "${DIST_BITS}" = "32" ]; then
|
|
ln -s /usr/lib/libm.so.1 /usr/lib/libm.so.2
|
|
elif [ ! -f /usr/lib/sparcv9/libm.so.2 -a "${DIST_BITS}" = "64" ]; then
|
|
ln -s /usr/lib/sparcv9/libm.so.1 /usr/lib/sparcv9/libm.so.2
|
|
fi
|
|
;;
|
|
'9000/800' | '9000/785')
|
|
DIST_ARCH="parisc"
|
|
if [ `getconf KERNEL_BITS` -eq 64 ]; then
|
|
DIST_BITS="64"
|
|
else
|
|
DIST_BITS="32"
|
|
fi
|
|
;;
|
|
'2097')
|
|
DIST_ARCH="390"
|
|
DIST_BITS="32"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# OSX always places Java in the same location so we can reliably set JAVA_HOME
|
|
if [ "$DIST_OS" = "macosx" ]
|
|
then
|
|
if [ -z "$JAVA_HOME" ]; then
|
|
JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
|
|
fi
|
|
fi
|
|
|
|
# Test Echo
|
|
ECHOTEST=`echo -n "x"`
|
|
if [ "$ECHOTEST" = "x" ]
|
|
then
|
|
ECHOOPT="-n "
|
|
else
|
|
ECHOOPT=""
|
|
fi
|
|
|
|
outputFile() {
|
|
if [ -f "$1" ]
|
|
then
|
|
echo " $1 (Found but not executable.)";
|
|
else
|
|
echo " $1"
|
|
fi
|
|
}
|
|
|
|
# Decide on the wrapper binary to use.
|
|
# If the bits of the OS could be detected, we will try to look for the
|
|
# binary with the correct bits value. If it doesn't exist, fall back
|
|
# and look for the 32-bit binary. If that doesn't exist either then
|
|
# look for the default.
|
|
WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-$DIST_BITS"
|
|
if [ -x "$WRAPPER_TEST_CMD" ]
|
|
then
|
|
WRAPPER_CMD="$WRAPPER_TEST_CMD"
|
|
else
|
|
WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
|
|
if [ -x "$WRAPPER_TEST_CMD" ]
|
|
then
|
|
WRAPPER_CMD="$WRAPPER_TEST_CMD"
|
|
else
|
|
if [ ! -x "$WRAPPER_CMD" ]
|
|
then
|
|
echo "Unable to locate any of the following binaries:"
|
|
outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-$DIST_BITS"
|
|
if [ ! "$DIST_BITS" = "32" ]
|
|
then
|
|
outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
|
|
fi
|
|
outputFile "$WRAPPER_CMD"
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Build the nice clause
|
|
if [ "X$PRIORITY" = "X" ]
|
|
then
|
|
CMDNICE=""
|
|
else
|
|
CMDNICE="nice -$PRIORITY"
|
|
fi
|
|
|
|
# Build the anchor file clause.
|
|
if [ "X$IGNORE_SIGNALS" = "X" ]
|
|
then
|
|
ANCHORPROP=
|
|
IGNOREPROP=
|
|
else
|
|
ANCHORPROP=wrapper.anchorfile=\"$ANCHORFILE\"
|
|
IGNOREPROP=wrapper.ignore_signals=TRUE
|
|
fi
|
|
|
|
# Build the status file clause.
|
|
if [ "X$DETAIL_STATUS$WAIT_FOR_STARTED_STATUS" = "X" ]
|
|
then
|
|
STATUSPROP=
|
|
else
|
|
STATUSPROP="wrapper.statusfile=\"$STATUSFILE\" wrapper.java.statusfile=\"$JAVASTATUSFILE\""
|
|
fi
|
|
|
|
if [ ! -n "$WAIT_FOR_STARTED_STATUS" ]
|
|
then
|
|
WAIT_FOR_STARTED_STATUS=true
|
|
fi
|
|
|
|
if [ $WAIT_FOR_STARTED_STATUS = true ] ; then
|
|
DETAIL_STATUS=true
|
|
fi
|
|
|
|
|
|
# Build the lock file clause. Only create a lock file if the lock directory exists on this platform.
|
|
LOCKPROP=
|
|
if [ -d $LOCKDIR ]
|
|
then
|
|
if [ -w $LOCKDIR ]
|
|
then
|
|
LOCKPROP=wrapper.lockfile=\"$LOCKFILE\"
|
|
fi
|
|
fi
|
|
|
|
checkUser() {
|
|
# $1 touchLock flag
|
|
# $2 command
|
|
|
|
# Check the configured user. If necessary rerun this script as the desired user.
|
|
if [ "X$RUN_AS_USER" != "X" ]
|
|
then
|
|
# Resolve the location of the 'id' command
|
|
IDEXE="/usr/xpg4/bin/id"
|
|
if [ ! -x "$IDEXE" ]
|
|
then
|
|
IDEXE="/usr/bin/id"
|
|
if [ ! -x "$IDEXE" ]
|
|
then
|
|
echo "Unable to locate 'id'."
|
|
echo "Please report this message along with the location of the command on your system."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ "`$IDEXE -u -n`" = "$RUN_AS_USER" ]
|
|
then
|
|
# Already running as the configured user. Avoid password prompts by not calling su.
|
|
RUN_AS_USER=""
|
|
fi
|
|
fi
|
|
if [ "X$RUN_AS_USER" != "X" ]
|
|
then
|
|
# If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be
|
|
# able to create the lock file. The Wrapper will be able to update this file once it
|
|
# is created but will not be able to delete it on shutdown. If $2 is defined then
|
|
# the lock file should be created for the current command
|
|
if [ "X$LOCKPROP" != "X" ]
|
|
then
|
|
if [ "X$1" != "X" ]
|
|
then
|
|
# Resolve the primary group
|
|
RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1`
|
|
if [ "X$RUN_AS_GROUP" = "X" ]
|
|
then
|
|
RUN_AS_GROUP=$RUN_AS_USER
|
|
fi
|
|
touch $LOCKFILE
|
|
chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE
|
|
fi
|
|
fi
|
|
|
|
# Still want to change users, recurse. This means that the user will only be
|
|
# prompted for a password once. Variables shifted by 1
|
|
#
|
|
# Use "runuser" if this exists. runuser should be used on RedHat in preference to su.
|
|
#
|
|
if test -f "/sbin/runuser"
|
|
then
|
|
/sbin/runuser - $RUN_AS_USER -c "\"$REALPATH\" $2"
|
|
else
|
|
su - $RUN_AS_USER -c "\"$REALPATH\" $2"
|
|
fi
|
|
|
|
# Now that we are the original user again, we may need to clean up the lock file.
|
|
if [ "X$LOCKPROP" != "X" ]
|
|
then
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
# Wrapper is not running so make sure the lock file is deleted.
|
|
if [ -f "$LOCKFILE" ]
|
|
then
|
|
rm "$LOCKFILE"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
getpid() {
|
|
pid=""
|
|
if [ -f "$PIDFILE" ]
|
|
then
|
|
if [ -r "$PIDFILE" ]
|
|
then
|
|
pid=`cat "$PIDFILE"`
|
|
if [ "X$pid" != "X" ]
|
|
then
|
|
# It is possible that 'a' process with the pid exists but that it is not the
|
|
# correct process. This can happen in a number of cases, but the most
|
|
# common is during system startup after an unclean shutdown.
|
|
# The ps statement below looks for the specific wrapper command running as
|
|
# the pid. If it is not found then the pid file is considered to be stale.
|
|
case "$DIST_OS" in
|
|
'freebsd')
|
|
pidtest=`$PSEXE -p $pid -o args | tail -1`
|
|
if [ "X$pidtest" = "XCOMMAND" ]
|
|
then
|
|
pidtest=""
|
|
fi
|
|
;;
|
|
'macosx')
|
|
pidtest=`$PSEXE -ww -p $pid -o command | grep "$WRAPPER_CMD" | tail -1`
|
|
;;
|
|
'solaris')
|
|
pidtest=`$PSEXE -auxww $pid | grep "$WRAPPER_CMD" | tail -1`
|
|
;;
|
|
'hpux')
|
|
pidtest=`$PSEXE -p $pid -x -o args | grep "$WRAPPER_CMD" | tail -1`
|
|
;;
|
|
*)
|
|
pidtest=`$PSEXE -p $pid -o args | grep "$WRAPPER_CMD" | tail -1`
|
|
;;
|
|
esac
|
|
|
|
if [ "X$pidtest" = "X" ]
|
|
then
|
|
# This is a stale pid file.
|
|
rm -f "$PIDFILE"
|
|
echo "Removed stale pid file: $PIDFILE"
|
|
pid=""
|
|
fi
|
|
fi
|
|
else
|
|
echo "Cannot read $PIDFILE."
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
getstatus() {
|
|
STATUS=
|
|
if [ -f "$STATUSFILE" ]
|
|
then
|
|
if [ -r "$STATUSFILE" ]
|
|
then
|
|
STATUS=`cat "$STATUSFILE"`
|
|
fi
|
|
fi
|
|
if [ "X$STATUS" = "X" ]
|
|
then
|
|
STATUS="Unknown"
|
|
fi
|
|
|
|
JAVASTATUS=
|
|
if [ -f "$JAVASTATUSFILE" ]
|
|
then
|
|
if [ -r "$JAVASTATUSFILE" ]
|
|
then
|
|
JAVASTATUS=`cat "$JAVASTATUSFILE"`
|
|
fi
|
|
fi
|
|
if [ "X$JAVASTATUS" = "X" ]
|
|
then
|
|
JAVASTATUS="Unknown"
|
|
fi
|
|
}
|
|
|
|
testpid() {
|
|
case "$DIST_OS" in
|
|
'solaris')
|
|
pid=`$PSEXE $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1` 2>/dev/null
|
|
;;
|
|
*)
|
|
pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1` 2>/dev/null
|
|
;;
|
|
esac
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
# Process is gone so remove the pid file.
|
|
rm -f "$PIDFILE"
|
|
pid=""
|
|
fi
|
|
}
|
|
|
|
launchdtrap() {
|
|
stopit
|
|
exit
|
|
}
|
|
|
|
waitforwrapperstop() {
|
|
getpid
|
|
while [ "X$pid" != "X" ] ; do
|
|
sleep 1
|
|
getpid
|
|
done
|
|
}
|
|
|
|
launchdinternal() {
|
|
getpid
|
|
trap launchdtrap TERM
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
# The string passed to eval must handles spaces in paths correctly.
|
|
COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.app.parameter.1=$1 wrapper.syslog.ident=\"$APP_NAME\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $STATUSPROP $LOCKPROP"
|
|
eval $COMMAND_LINE
|
|
else
|
|
echo "$APP_LONG_NAME is already running."
|
|
exit 1
|
|
fi
|
|
# launchd expects that this script stay up and running so we need to do our own monitoring of the Wrapper process.
|
|
if [ $WAIT_FOR_STARTED_STATUS = true ]
|
|
then
|
|
waitforwrapperstop
|
|
fi
|
|
}
|
|
|
|
console() {
|
|
echo "Running $APP_LONG_NAME..."
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
trap '' 3
|
|
# The string passed to eval must handles spaces in paths correctly.
|
|
COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" $ANCHORPROP $STATUSPROP $LOCKPROP"
|
|
eval $COMMAND_LINE
|
|
else
|
|
echo "$APP_LONG_NAME is already running."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
waitforjavastartup() {
|
|
getstatus
|
|
echo $ECHOOPT"Waiting for $APP_LONG_NAME..."
|
|
|
|
# Wait until the timeout or we have something besides Unknown.
|
|
counter=15
|
|
while [ "$JAVASTATUS" = "Unknown" -a $counter -gt 0 -a -n "$JAVASTATUS" ] ; do
|
|
echo $ECHOOPT"."
|
|
sleep 1
|
|
getstatus
|
|
counter=`expr $counter - 1`
|
|
done
|
|
|
|
if [ -n "$WAIT_FOR_STARTED_TIMEOUT" ] ; then
|
|
counter=$WAIT_FOR_STARTED_TIMEOUT
|
|
else
|
|
counter=120
|
|
fi
|
|
while [ "$JAVASTATUS" != "STARTED" -a "$JAVASTATUS" != "Unknown" -a $counter -gt 0 -a -n "$JAVASTATUS" ] ; do
|
|
echo $ECHOOPT"."
|
|
sleep 1
|
|
getstatus
|
|
counter=`expr $counter - 1`
|
|
done
|
|
if [ "X$ECHOOPT" != "X" ] ; then
|
|
echo ""
|
|
fi
|
|
echo "$APP_LONG_NAME started."
|
|
}
|
|
|
|
startwait() {
|
|
if [ $WAIT_FOR_STARTED_STATUS = true ]
|
|
then
|
|
waitforjavastartup
|
|
fi
|
|
# Sleep for a few seconds to allow for intialization if required
|
|
# then test to make sure we're still running.
|
|
#
|
|
i=0
|
|
while [ $i -lt $WAIT_AFTER_STARTUP ]
|
|
do
|
|
sleep 1
|
|
echo $ECHOOPT"."
|
|
i=`expr $i + 1`
|
|
done
|
|
if [ $WAIT_AFTER_STARTUP -gt 0 ]
|
|
then
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
echo " WARNING: $APP_LONG_NAME may have failed to start."
|
|
exit 1
|
|
else
|
|
echo " running ($pid)."
|
|
fi
|
|
else
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
macosxstart() {
|
|
# The daemon has been installed.
|
|
echo "Starting $APP_LONG_NAME. Detected Mac OSX and installed launchd daemon."
|
|
if [ `id | sed 's/^uid=//;s/(.*$//'` != "0" ] ; then
|
|
echo "Must be root to perform this action."
|
|
exit 1
|
|
fi
|
|
|
|
getpid
|
|
if [ "X$pid" != "X" ] ; then
|
|
echo "$APP_LONG_NAME is already running."
|
|
exit 1
|
|
fi
|
|
|
|
# If the daemon was just installed, it may not be loaded.
|
|
LOADED_PLIST=`launchctl list | grep ${APP_PLIST_BASE}`
|
|
if [ "X${LOADED_PLIST}" = "X" ] ; then
|
|
launchctl load /Library/LaunchDaemons/${APP_PLIST}
|
|
fi
|
|
# If launchd is set to run the daemon already at Load, we don't need to call start
|
|
getpid
|
|
if [ "X$pid" == "X" ] ; then
|
|
launchctl start ${APP_PLIST_BASE}
|
|
fi
|
|
|
|
startwait
|
|
}
|
|
|
|
start() {
|
|
echo $ECHOOPT"Starting $APP_LONG_NAME..."
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
# The string passed to eval must handles spaces in paths correctly.
|
|
COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $STATUSPROP $LOCKPROP"
|
|
eval $COMMAND_LINE
|
|
else
|
|
echo "$APP_LONG_NAME is already running."
|
|
exit 1
|
|
fi
|
|
|
|
startwait
|
|
}
|
|
|
|
stopit() {
|
|
# $1 exit if down flag
|
|
|
|
echo "Stopping $APP_LONG_NAME..."
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
echo "$APP_LONG_NAME was not running."
|
|
if [ "X$1" = "X1" ]
|
|
then
|
|
exit 1
|
|
fi
|
|
else
|
|
if [ "X$IGNORE_SIGNALS" = "X" ]
|
|
then
|
|
# Running so try to stop it.
|
|
kill $pid
|
|
if [ $? -ne 0 ]
|
|
then
|
|
# An explanation for the failure should have been given
|
|
echo "Unable to stop $APP_LONG_NAME."
|
|
exit 1
|
|
fi
|
|
else
|
|
rm -f "$ANCHORFILE"
|
|
if [ -f "$ANCHORFILE" ]
|
|
then
|
|
# An explanation for the failure should have been given
|
|
echo "Unable to stop $APP_LONG_NAME."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# We can not predict how long it will take for the wrapper to
|
|
# actually stop as it depends on settings in wrapper.conf.
|
|
# Loop until it does.
|
|
savepid=$pid
|
|
CNT=0
|
|
TOTCNT=0
|
|
while [ "X$pid" != "X" ]
|
|
do
|
|
# Show a waiting message every 5 seconds.
|
|
if [ "$CNT" -lt "5" ]
|
|
then
|
|
CNT=`expr $CNT + 1`
|
|
else
|
|
echo "Waiting for $APP_LONG_NAME to exit..."
|
|
CNT=0
|
|
fi
|
|
TOTCNT=`expr $TOTCNT + 1`
|
|
|
|
sleep 1
|
|
|
|
testpid
|
|
done
|
|
|
|
pid=$savepid
|
|
testpid
|
|
if [ "X$pid" != "X" ]
|
|
then
|
|
echo "Failed to stop $APP_LONG_NAME."
|
|
exit 1
|
|
else
|
|
echo "Stopped $APP_LONG_NAME."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
status() {
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
echo "$APP_LONG_NAME is not running."
|
|
exit 1
|
|
else
|
|
if [ "X$DETAIL_STATUS" = "X" ]
|
|
then
|
|
echo "$APP_LONG_NAME is running (PID:$pid)."
|
|
else
|
|
getstatus
|
|
echo "$APP_LONG_NAME is running (PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS)"
|
|
fi
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
installdaemon() {
|
|
if [ `id | sed 's/^uid=//;s/(.*$//'` != "0" ] ; then
|
|
echo "Must be root to perform this action."
|
|
exit 1
|
|
else
|
|
if [ "$DIST_OS" = "solaris" ] ; then
|
|
echo "Detected Solaris:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
ln -s $REALPATH /etc/init.d/$APP_NAME
|
|
ln -s /etc/init.d/$APP_NAME /etc/rc3.d/K20$APP_NAME
|
|
ln -s /etc/init.d/$APP_NAME /etc/rc3.d/S20$APP_NAME
|
|
fi
|
|
elif [ "$DIST_OS" = "linux" ] ; then
|
|
if [ -f /etc/redhat-release -o -f /etc/redhat_version -o -f /etc/fedora-release ] ; then
|
|
echo "Detected RHEL or Fedora:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
ln -s $REALPATH /etc/init.d/$APP_NAME
|
|
/sbin/chkconfig --add $APP_NAME
|
|
/sbin/chkconfig $APP_NAME on
|
|
fi
|
|
elif [ -f /etc/SuSE-release ] ; then
|
|
echo "Detected SuSE or SLES:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
ln -s $REALPATH /etc/init.d/$APP_NAME
|
|
insserv /etc/init.d/$APP_NAME
|
|
fi
|
|
elif [ -f /etc/lsb-release ] ; then
|
|
echo "Detected Ubuntu:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
ln -s $REALPATH /etc/init.d/$APP_NAME
|
|
update-rc.d $APP_NAME defaults
|
|
fi
|
|
else
|
|
echo "Detected Linux:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
ln -s $REALPATH /etc/init.d/$APP_NAME
|
|
ln -s /etc/init.d/$APP_NAME /etc/rc3.d/K20$APP_NAME
|
|
ln -s /etc/init.d/$APP_NAME /etc/rc3.d/S20$APP_NAME
|
|
ln -s /etc/init.d/$APP_NAME /etc/rc5.d/S20$APP_NAME
|
|
ln -s /etc/init.d/$APP_NAME /etc/rc5.d/K20$APP_NAME
|
|
fi
|
|
fi
|
|
elif [ "$DIST_OS" = "hpux" ] ; then
|
|
echo "Detected HP-UX:"
|
|
if [ -f /sbin/init.d/$APP_NAME ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
ln -s $REALPATH /sbin/init.d/$APP_NAME
|
|
ln -s /sbin/init.d/$APP_NAME /sbin/rc3.d/K20$APP_NAME
|
|
ln -s /sbin/init.d/$APP_NAME /sbin/rc3.d/S20$APP_NAME
|
|
fi
|
|
elif [ "$DIST_OS" = "aix" ] ; then
|
|
echo "Detected AIX:"
|
|
if [ -f /etc/rc.d/init.d/$APP_NAME ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
ln -s $REALPATH /etc/rc.d/init.d/$APP_NAME
|
|
ln -s /etc/rc.d/init.d/$APP_NAME /etc/rc.d/rc2.d/S20$APP_NAME
|
|
ln -s /etc/rc.d/init.d/$APP_NAME /etc/rc.d/rc2.d/K20$APP_NAME
|
|
fi
|
|
elif [ "$DIST_OS" = "freebsd" ] ; then
|
|
echo "Detected FreeBSD:"
|
|
if [ -f /etc/rc.d/$APP_NAME ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
sed -i .bak "/${APP_NAME}_enable=\"YES\"/d" /etc/rc.conf
|
|
if [ -f ${REALDIR}/${APP_NAME}.install ] ; then
|
|
ln -s ${REALDIR}/${APP_NAME}.install /etc/rc.d/$APP_NAME
|
|
else
|
|
echo '#!/bin/sh' > /etc/rc.d/$APP_NAME
|
|
echo "#" >> /etc/rc.d/$APP_NAME
|
|
echo "# PROVIDE: $APP_NAME" >> /etc/rc.d/$APP_NAME
|
|
echo "# REQUIRE: NETWORKING" >> /etc/rc.d/$APP_NAME
|
|
echo "# KEYWORD: shutdown" >> /etc/rc.d/$APP_NAME
|
|
echo ". /etc/rc.subr" >> /etc/rc.d/$APP_NAME
|
|
echo "name=\"$APP_NAME\"" >> /etc/rc.d/$APP_NAME
|
|
echo "rcvar=\`set_rcvar\`" >> /etc/rc.d/$APP_NAME
|
|
echo "command=\"${REALDIR}/${APP_NAME}\"" >> /etc/rc.d/$APP_NAME
|
|
echo 'start_cmd="${name}_start"' >> /etc/rc.d/$APP_NAME
|
|
echo 'load_rc_config $name' >> /etc/rc.d/$APP_NAME
|
|
echo 'status_cmd="${name}_status"' >> /etc/rc.d/$APP_NAME
|
|
echo 'stop_cmd="${name}_stop"' >> /etc/rc.d/$APP_NAME
|
|
echo "${APP_NAME}_status() {" >> /etc/rc.d/$APP_NAME
|
|
echo '${command} status' >> /etc/rc.d/$APP_NAME
|
|
echo '}' >> /etc/rc.d/$APP_NAME
|
|
echo "${APP_NAME}_stop() {" >> /etc/rc.d/$APP_NAME
|
|
echo '${command} stop' >> /etc/rc.d/$APP_NAME
|
|
echo '}' >> /etc/rc.d/$APP_NAME
|
|
echo "${APP_NAME}_start() {" >> /etc/rc.d/$APP_NAME
|
|
echo '${command} start' >> /etc/rc.d/$APP_NAME
|
|
echo '}' >> /etc/rc.d/$APP_NAME
|
|
echo 'run_rc_command "$1"' >> /etc/rc.d/$APP_NAME
|
|
fi
|
|
echo "${APP_NAME}_enable=\"YES\"" >> /etc/rc.conf
|
|
chmod 555 /etc/rc.d/$APP_NAME
|
|
fi
|
|
elif [ "$DIST_OS" = "macosx" ] ; then
|
|
echo "Detected Mac OSX:"
|
|
if [ -f /Library/LaunchDaemons/${APP_PLIST} ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
if [ -f ${REALDIR}/${APP_PLIST} ] ; then
|
|
ln -s ${REALDIR}/${APP_PLIST} /Library/LaunchDaemons/${APP_PLIST}
|
|
else
|
|
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > /Library/LaunchDaemons/${APP_PLIST}
|
|
echo "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo "<plist version=\"1.0\">" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <dict>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <key>Label</key>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <string>${APP_PLIST_BASE}</string>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <key>ProgramArguments</key>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <array>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <string>${REALDIR}/${APP_NAME}</string>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <string>launchdinternal</string>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " </array>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <key>OnDemand</key>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <true/>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <key>RunAtLoad</key>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <true/>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
if [ "X$RUN_AS_USER" != "X" ] ; then
|
|
echo " <key>UserName</key>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo " <string>${RUN_AS_USER}</string>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
fi
|
|
echo " </dict>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
echo "</plist>" >> /Library/LaunchDaemons/${APP_PLIST}
|
|
fi
|
|
chmod 555 /Library/LaunchDaemons/${APP_PLIST}
|
|
fi
|
|
elif [ "$DIST_OS" = "zos" ] ; then
|
|
echo "Detected z/OS:"
|
|
if [ -f /etc/rc.bak ] ; then
|
|
echo " The $APP_LONG_NAME daemon is already installed."
|
|
exit 1
|
|
else
|
|
echo " Installing the $APP_LONG_NAME daemon.."
|
|
cp /etc/rc /etc/rc.bak
|
|
sed "s:echo /etc/rc script executed, \`date\`::g" /etc/rc.bak > /etc/rc
|
|
echo "_BPX_JOBNAME='${APP_NAME}' ${REALDIR}/${APP_NAME} start" >>/etc/rc
|
|
echo '/etc/rc script executed, `date`' >>/etc/rc
|
|
fi
|
|
else
|
|
echo "Install not currently supported for $DIST_OS"
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
removedaemon() {
|
|
if [ `id | sed 's/^uid=//;s/(.*$//'` != "0" ] ; then
|
|
echo "Must be root to perform this action."
|
|
exit 1
|
|
else
|
|
stopit "0"
|
|
if [ "$DIST_OS" = "solaris" ] ; then
|
|
echo "Detected Solaris:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
for i in /etc/rc3.d/S20$APP_NAME /etc/rc3.d/K20$APP_NAME /etc/init.d/$APP_NAME
|
|
do
|
|
rm -f $i
|
|
done
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
elif [ "$DIST_OS" = "linux" ] ; then
|
|
if [ -f /etc/redhat-release -o -f /etc/redhat_version -o -f /etc/fedora-release ] ; then
|
|
echo "Detected RHEL or Fedora:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
/sbin/chkconfig $APP_NAME off
|
|
/sbin/chkconfig --del $APP_NAME
|
|
rm -f /etc/init.d/$APP_NAME
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
elif [ -f /etc/SuSE-release ] ; then
|
|
echo "Detected SuSE or SLES:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
insserv -r /etc/init.d/$APP_NAME
|
|
rm -f /etc/init.d/$APP_NAME
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
elif [ -f /etc/lsb-release ] ; then
|
|
echo "Detected Ubuntu:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
update-rc.d -f $APP_NAME remove
|
|
rm -f /etc/init.d/$APP_NAME
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Detected Linux:"
|
|
if [ -f /etc/init.d/$APP_NAME ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
for i in /etc/rc3.d/K20$APP_NAME /etc/rc5.d/K20$APP_NAME /etc/rc3.d/S20$APP_NAME /etc/init.d/$APP_NAME /etc/rc5.d/S20$APP_NAME
|
|
do
|
|
rm -f $i
|
|
done
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
fi
|
|
elif [ "$DIST_OS" = "hpux" ] ; then
|
|
echo "Detected HP-UX:"
|
|
if [ -f /sbin/init.d/$APP_NAME ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
for i in /sbin/rc3.d/K20$APP_NAME /sbin/rc3.d/S20$APP_NAME /sbin/init.d/$APP_NAME
|
|
do
|
|
rm -f $i
|
|
done
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
elif [ "$DIST_OS" = "aix" ] ; then
|
|
echo "Detected AIX:"
|
|
if [ -f /etc/rc.d/init.d/$APP_NAME ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
for i in /etc/rc.d/rc2.d/S20$APP_NAME /etc/rc.d/rc2.d/K20$APP_NAME /etc/rc.d/init.d/$APP_NAME
|
|
do
|
|
rm -f $i
|
|
done
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
elif [ "$DIST_OS" = "freebsd" ] ; then
|
|
echo "Detected FreeBSD:"
|
|
if [ -f /etc/rc.d/$APP_NAME ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
for i in /etc/rc.d/$APP_NAME
|
|
do
|
|
rm -f $i
|
|
done
|
|
sed -i .bak "/${APP_NAME}_enable=\"YES\"/d" /etc/rc.conf
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
elif [ "$DIST_OS" = "macosx" ] ; then
|
|
echo "Detected Mac OSX:"
|
|
if [ -f "/Library/LaunchDaemons/${APP_PLIST}" ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
# Make sure the plist is installed
|
|
LOADED_PLIST=`launchctl list | grep ${APP_PLIST_BASE}`
|
|
if [ "X${LOADED_PLIST}" != "X" ] ; then
|
|
launchctl unload /Library/LaunchDaemons/${APP_PLIST}
|
|
fi
|
|
rm -f /Library/LaunchDaemons/${APP_PLIST}
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
elif [ "$DIST_OS" = "zos" ] ; then
|
|
echo "Detected z/OS:"
|
|
if [ -f /etc/rc.bak ] ; then
|
|
echo " Removing $APP_LONG_NAME daemon..."
|
|
cp /etc/rc /etc/rc.bak
|
|
sed "s/_BPX_JOBNAME=\'APP_NAME\'.*//g" /etc/rc.bak > /etc/rc
|
|
rm /etc/rc.bak
|
|
else
|
|
echo " The $APP_LONG_NAME daemon is not currently installed."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Remove not currently supported for $DIST_OS"
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
dump() {
|
|
echo "Dumping $APP_LONG_NAME..."
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
echo "$APP_LONG_NAME was not running."
|
|
else
|
|
kill -3 $pid
|
|
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "Failed to dump $APP_LONG_NAME."
|
|
exit 1
|
|
else
|
|
echo "Dumped $APP_LONG_NAME."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Used by HP-UX init scripts.
|
|
startmsg() {
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
echo "Starting $APP_LONG_NAME... (Wrapper:Stopped)"
|
|
else
|
|
if [ "X$DETAIL_STATUS" = "X" ]
|
|
then
|
|
echo "Starting $APP_LONG_NAME... (Wrapper:Running)"
|
|
else
|
|
getstatus
|
|
echo "Starting $APP_LONG_NAME... (Wrapper:$STATUS, Java:$JAVASTATUS)"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Used by HP-UX init scripts.
|
|
stopmsg() {
|
|
getpid
|
|
if [ "X$pid" = "X" ]
|
|
then
|
|
echo "Stopping $APP_LONG_NAME... (Wrapper:Stopped)"
|
|
else
|
|
if [ "X$DETAIL_STATUS" = "X" ]
|
|
then
|
|
echo "Stopping $APP_LONG_NAME... (Wrapper:Running)"
|
|
else
|
|
getstatus
|
|
echo "Stopping $APP_LONG_NAME... (Wrapper:$STATUS, Java:$JAVASTATUS)"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
|
|
'console')
|
|
checkUser touchlock $1
|
|
console
|
|
;;
|
|
|
|
'start')
|
|
if [ "$DIST_OS" = "macosx" -a -f "/Library/LaunchDaemons/${APP_PLIST}" ] ; then
|
|
macosxstart
|
|
else
|
|
checkUser touchlock $1
|
|
start
|
|
fi
|
|
;;
|
|
|
|
'stop')
|
|
checkUser "" $1
|
|
stopit "0"
|
|
;;
|
|
|
|
'restart')
|
|
checkUser touchlock $1
|
|
stopit "0"
|
|
start
|
|
;;
|
|
|
|
'condrestart')
|
|
checkUser touchlock $1
|
|
stopit "1"
|
|
start
|
|
;;
|
|
|
|
'status')
|
|
checkUser "" $1
|
|
status
|
|
;;
|
|
|
|
'install')
|
|
installdaemon
|
|
;;
|
|
|
|
'remove')
|
|
removedaemon
|
|
;;
|
|
|
|
'dump')
|
|
checkUser "" $1
|
|
dump
|
|
;;
|
|
|
|
'start_msg')
|
|
# Internal command called by launchd on HP-UX.
|
|
checkUser "" $1
|
|
startmsg
|
|
;;
|
|
|
|
'stop_msg')
|
|
# Internal command called by launchd on HP-UX.
|
|
checkUser "" $1
|
|
stopmsg
|
|
;;
|
|
|
|
'launchdinternal')
|
|
# Internal command called by launchd on Max OSX.
|
|
# We do not want to call checkUser here as it is handled in the launchd plist file. Doing it here would confuse launchd.
|
|
launchdinternal
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 { console | start | stop | restart | condrestart | status | install | remove | dump }"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|