
resources.bin.contrib.karaf-service-template.init-debian Maven / Gradle / Ivy
#!/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.
#
# /etc/init.d/${KARAF_SERVICE_NAME} -- startup script for Karaf
#
#
### BEGIN INIT INFO
# Provides: ${KARAF_SERVICE_NAME}
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Should-Start: $named
# Should-Stop: $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Karaf
# Description: Provide Karaf startup/shutdown script
### END INIT INFO
NAME=${KARAF_SERVICE_NAME}
DESC=${KARAF_SERVICE_NAME}
DEFAULT="/etc/default/$NAME"
# Check privileges
if [ `id -u` -ne 0 ]; then
echo "You need root privileges to run this script"
exit 1
fi
# Make sure karaf is started with system locale
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG
fi
. /lib/lsb/init-functions
if [ -r /etc/default/rcS ]; then
. /etc/default/rcS
fi
# Overwrite settings from default file
if [ -f "$DEFAULT" ]; then
. "$DEFAULT"
fi
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
# Check karaf user
id $KARAF_SERVICE_USER > /dev/null 2>&1
if [ $? -ne 0 -o -z "$KARAF_SERVICE_USER" ]; then
echo "User \"$KARAF_SERVICE_USER\" does not exist..." >&2
exit 1
fi
# Check owner of KARAF_SERVICE_PATH
if [ ! $(stat -L -c "%U" "$KARAF_SERVICE_PATH") = $KARAF_SERVICE_USER ]; then
echo "The user \"$KARAF_SERVICE_USER\" is not owner of \"$KARAF_SERVICE_PATH\"" >&2
exit 1
fi
# The amount of time to wait for startup
if [ -z "$STARTUP_WAIT" ]; then
STARTUP_WAIT=30
fi
# The amount of time to wait for shutdown
if [ -z "$SHUTDOWN_WAIT" ]; then
SHUTDOWN_WAIT=30
fi
# Helper function to check status of karaf service
check_status() {
pidofproc -p "$KARAF_SERVICE_PIDFILE" "$JAVA" >/dev/null 2>&1
}
case "$1" in
start)
echo "Starting $DESC" "$NAME"
# PID file
PID_PATH=$(dirname "$KARAF_SERVICE_PIDFILE")
if [ ! -d "$PID_PATH" ]; then
mkdir -p "$PID_PATH"
fi
chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$PID_PATH" || true
# Console log
LOG_PATH=$(dirname "$KARAF_SERVICE_LOG")
if [ ! -d "$LOG_PATH" ]; then
mkdir -p "$LOG_PATH"
fi
cat /dev/null > "$KARAF_SERVICE_LOG"
chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$LOG_PATH"
chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_LOG"
start-stop-daemon \
--start \
--user "$KARAF_SERVICE_USER" \
--chuid "$KARAF_SERVICE_USER" \
--chdir "$KARAF_SERVICE_PATH" \
--pidfile "$KARAF_SERVICE_PIDFILE" \
--make-pidfile \
--exec "$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE" -- "daemon" \
>> "$KARAF_SERVICE_LOG" 2>&1 &
count=0
launched=0
until [ $count -gt $STARTUP_WAIT ]
do
sleep 1
count=$((count + 1));
if check_status; then
launched=1
break
fi
done
if check_status; then
log_end_msg 0
else
log_end_msg 1
fi
if [ $launched -eq 0 ]; then
log_warning_msg "$DESC hasn't started within the timeout allowed"
log_warning_msg "please review file \"$KARAF_SERVICE_LOG\" to see the status of the service"
fi
;;
stop)
check_status
status_stop=$?
if [ $status_stop -eq 0 ]; then
kwait=$SHUTDOWN_WAIT
read kpid < "$KARAF_SERVICE_PIDFILE"
log_daemon_msg "Stopping $DESC" "$NAME"
children_pids=$(pgrep -P $kpid)
su - $KARAF_SERVICE_USER \
-c "export JAVA_HOME=$JAVA_HOME; \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" stop"
count=0
until [ `ps --pid $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ]
do
sleep 1
count=$((count + 1));
done
if check_status; then
start-stop-daemon \
--stop \
--quiet \
--pidfile "$KARAF_SERVICE_PIDFILE" \
--user "$KARAF_SERVICE_USER" \
--retry=TERM/$SHUTDOWN_WAIT/KILL/5 \
> /dev/null 2>&1
if [ $? -eq 2 ]; then
log_failure_msg "$DESC can't be stopped"
exit 1
fi
fi
for child in $children_pids; do
/bin/kill -9 $child >/dev/null 2>&1
done
log_end_msg 0
rm -rf "$KARAF_SERVICE_PIDFILE"
elif [ $status_stop -eq 1 ]; then
log_action_msg "$DESC is not running but the pid file exists, cleaning up"
rm -f "$KARAF_SERVICE_PIDFILE"
elif [ $status_stop -eq 3 ]; then
log_action_msg "$DESC is not running"
fi
;;
restart)
check_status
status_restart=$?
if [ $status_restart -eq 0 ]; then
$0 stop
fi
$0 start
;;
status)
check_status
status=$?
if [ $status -eq 0 ]; then
read pid < $KARAF_SERVICE_PIDFILE
log_action_msg "$DESC is running with pid $pid"
exit 0
elif [ $status -eq 1 ]; then
log_action_msg "$DESC is not running and the pid file exists"
exit 1
elif [ $status -eq 3 ]; then
log_action_msg "$DESC is not running"
exit 3
else
log_action_msg "Unable to determine $DESC status"
exit 4
fi
;;
*)
log_action_msg "Usage: $0 {start|stop|restart|status}"
exit 2
;;
esac
exit 0
© 2015 - 2025 Weber Informatics LLC | Privacy Policy