171 lines
4.7 KiB
Bash
171 lines
4.7 KiB
Bash
#!/bin/sh
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright ownership.
|
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
# (the "License"); you may not use this file except in compliance with
|
|
# the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
# Karaf control script
|
|
# description: Karaf startup script
|
|
# processname: ${KARAF_SERVICE_NAME}
|
|
# pidfile: ${KARAF_SERVICE_PIDFILE}
|
|
# config: ${KARAF_SERVICE_CONF}
|
|
#
|
|
|
|
if [ -r "${KARAF_SERVICE_CONF}" ]; then
|
|
. "${KARAF_SERVICE_CONF}"
|
|
else
|
|
echo "Error KARAF_SERVICE_CONF not defined"
|
|
exit -1
|
|
fi
|
|
|
|
# Location of JDK
|
|
if [ -n "$JAVA_HOME" ]; then
|
|
export JAVA_HOME
|
|
fi
|
|
|
|
# Setup the JVM
|
|
if [ -z "$JAVA" ]; then
|
|
if [ -n "$JAVA_HOME" ]; then
|
|
JAVA="$JAVA_HOME/bin/java"
|
|
else
|
|
JAVA="java"
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$STARTUP_WAIT" ]; then
|
|
STARTUP_WAIT=30
|
|
fi
|
|
|
|
if [ -z "$SHUTDOWN_WAIT" ]; then
|
|
SHUTDOWN_WAIT=30
|
|
fi
|
|
|
|
prog=${KARAF_SERVICE_NAME}
|
|
|
|
do_start() {
|
|
echo "Starting $prog: "
|
|
if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
|
|
read ppid < "$KARAF_SERVICE_PIDFILE"
|
|
if [ `ps -p $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then
|
|
echo "$prog is already running"
|
|
return 1
|
|
else
|
|
rm -f "$KARAF_SERVICE_PIDFILE"
|
|
fi
|
|
fi
|
|
|
|
LOG_PATH=`dirname "$KARAF_SERVICE_LOG"`
|
|
mkdir -p "$LOG_PATH"
|
|
cat /dev/null > "$KARAF_SERVICE_LOG"
|
|
chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_LOG"
|
|
|
|
PID_PATH=`dirname "$KARAF_SERVICE_PIDFILE"`
|
|
mkdir -p "$PID_PATH"
|
|
chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$PID_PATH" || true
|
|
|
|
if [ ! -z "$KARAF_SERVICE_USER" ]; then
|
|
if [ "$KARAF_SERVICE_USER" = "root" ]; then
|
|
KARAF_EXEC=exec
|
|
export KARAF_EXEC
|
|
|
|
JAVA_HOME=$JAVA_HOME
|
|
export JAVA_HOME
|
|
|
|
"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE" daemon >> "$KARAF_SERVICE_LOG" 2>&1 &
|
|
|
|
echo $! > "$KARAF_SERVICE_PIDFILE"
|
|
else
|
|
su - $KARAF_SERVICE_USER \
|
|
-c " { export KARAF_EXEC=exec; export JAVA_HOME=$JAVA_HOME; \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" daemon >> \"$KARAF_SERVICE_LOG\" 2>&1 & } ; echo \$! >| \"$KARAF_SERVICE_PIDFILE\" "
|
|
fi
|
|
|
|
sleep 1
|
|
if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
|
|
chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_PIDFILE"
|
|
fi
|
|
fi
|
|
|
|
RETVAL=$?
|
|
return $RETVAL
|
|
}
|
|
|
|
do_stop() {
|
|
echo $"Stopping $prog: "
|
|
count=0;
|
|
|
|
if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
|
|
read kpid < "$KARAF_SERVICE_PIDFILE"
|
|
kwait=$SHUTDOWN_WAIT
|
|
|
|
if [ "$KARAF_SERVICE_USER" = "root" ]; then
|
|
JAVA_HOME=$JAVA_HOME
|
|
export JAVA_HOME
|
|
|
|
"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE" stop >> "$KARAF_SERVICE_LOG" 2>&1
|
|
else
|
|
su - $KARAF_SERVICE_USER \
|
|
-c "export JAVA_HOME=$JAVA_HOME; \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" stop >> \"$KARAF_SERVICE_LOG\" 2>&1"
|
|
fi
|
|
|
|
until [ `ps -p $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ]
|
|
do
|
|
sleep 1
|
|
count=`expr $count + 1`
|
|
done
|
|
|
|
if [ $count -gt $kwait ]; then
|
|
if [ `ps -p $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '1' ]; then
|
|
kill -9 $kpid
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
rm -f "$KARAF_SERVICE_PIDFILE"
|
|
rm -f $KARAF_LOCKFILE
|
|
}
|
|
|
|
do_status() {
|
|
if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
|
|
read ppid < "$KARAF_SERVICE_PIDFILE"
|
|
if [ `ps -p $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then
|
|
echo "$prog is running (pid $ppid)"
|
|
return 0
|
|
else
|
|
echo "$prog dead but pid file exists"
|
|
return 1
|
|
fi
|
|
fi
|
|
echo "$prog is not running"
|
|
return 3
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
do_start
|
|
;;
|
|
stop)
|
|
do_stop
|
|
;;
|
|
restart)
|
|
do_stop
|
|
do_start
|
|
;;
|
|
status)
|
|
do_status
|
|
;;
|
|
*)
|
|
## If no parameters are given, print which are avaiable.
|
|
echo "Usage: $0 {start|stop|status|restart}"
|
|
exit 1
|
|
;;
|
|
esac |