#!/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 # # chkconfig: - 80 20 # description: Karaf startup script # processname: ${KARAF_SERVICE_NAME} # pidfile: ${KARAF_SERVICE_PIDFILE} # config: ${KARAF_SERVICE_CONF} # # Source function library. . /etc/init.d/functions # Load Java configuration. [ -r /etc/java/java.conf ] && . /etc/java/java.conf export JAVA_HOME if [ -r "${KARAF_SERVICE_CONF}" ]; then . "${KARAF_SERVICE_CONF}" else echo "Error KARAF_SERVICE_CONF not defined" exit -1 fi if [ -z "$STARTUP_WAIT" ]; then STARTUP_WAIT=30 fi if [ -z "$SHUTDOWN_WAIT" ]; then SHUTDOWN_WAIT=30 fi prog=${KARAF_SERVICE_NAME} currenttime=$(date +%s%N | cut -b1-13) start() { echo -n "Starting $prog: " if [ -f "$KARAF_SERVICE_PIDFILE" ]; then read ppid < "$KARAF_SERVICE_PIDFILE" if [ `ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then echo -n "$prog is already running" failure echo 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 [ -r /etc/rc.d/init.d/functions ]; then daemon \ --user="$KARAF_SERVICE_USER" \ --pidfile="$KARAF_SERVICE_PIDFILE" \ " { \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" daemon >> \"$KARAF_SERVICE_LOG\" 2>&1 & } ; echo \$! >| \"$KARAF_SERVICE_PIDFILE\" " else su - $KARAF_SERVICE_USER \ -c " { \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" daemon >> \"$KARAF_SERVICE_LOG\" 2>&1 & } ; echo \$! >| \"$KARAF_SERVICE_PIDFILE\" " fi if [ -f "$KARAF_SERVICE_PIDFILE" ]; then chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_PIDFILE" fi fi RETVAL=$? echo if [ $RETVAL -eq 0 ]; then touch $KARAF_LOCKFILE fi return $RETVAL } stop() { echo -n $"Stopping $prog: " count=0; if [ -f "$KARAF_SERVICE_PIDFILE" ]; then read kpid < "$KARAF_SERVICE_PIDFILE" let kwait=$SHUTDOWN_WAIT # Try issuing SIGTERM su - $KARAF_SERVICE_USER \ -c "export JAVA_HOME=$JAVA_HOME; \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" stop" until [ `ps --pid $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ] do sleep 1 let count=$count+1; done if [ $count -gt $kwait ]; then kill -9 $kpid fi fi rm -f "$KARAF_SERVICE_PIDFILE" rm -f "$KARAF_LOCKFILE" success echo } status() { if [ -f "$KARAF_SERVICE_PIDFILE" ]; then read ppid < "$KARAF_SERVICE_PIDFILE" if [ `ps --pid $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) start ;; stop) stop ;; restart) $0 stop $0 start ;; status) status ;; *) ## If no parameters are given, print which are avaiable. echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac