Repository: karaf Updated Branches: refs/heads/master 3cb0a002f -> d413eef2e
KARAF-4277 - System scripts : add option to configure the executable to use to start/stop karaf Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/d413eef2 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/d413eef2 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/d413eef2 Branch: refs/heads/master Commit: d413eef2e3799b90a23b482e1e4f8f4866ca7251 Parents: 3cb0a00 Author: lburgazzoli <[email protected]> Authored: Fri Jan 15 23:04:35 2016 +0100 Committer: lburgazzoli <[email protected]> Committed: Sat Jan 16 16:09:07 2016 +0100 ---------------------------------------------------------------------- .../bin/contrib/karaf-service-template.conf | 1 + .../bin/contrib/karaf-service-template.init | 22 +++++--- .../contrib/karaf-service-template.init-debian | 23 ++++---- .../contrib/karaf-service-template.init-redhat | 20 ++++--- .../contrib/karaf-service-template.solaris-smf | 40 +++++++------- .../bin/contrib/karaf-service-template.systemd | 6 +-- .../resources/bin/contrib/karaf-service-win.xml | 8 ++- .../resources/bin/contrib/karaf-service.sh | 56 +++++++++++--------- 8 files changed, 101 insertions(+), 75 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/d413eef2/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.conf ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.conf b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.conf index ed5c0d3..658d220 100644 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.conf +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.conf @@ -23,6 +23,7 @@ KARAF_SERVICE_USER="${KARAF_SERVICE_USER}" KARAF_SERVICE_GROUP="${KARAF_SERVICE_GROUP}" KARAF_LOCKFILE="/var/lock/subsys/$KARAF_SERVICE_NAME" KARAF_SERVICE_PIDFILE=${KARAF_SERVICE_PIDFILE} +KARAF_SERVICE_EXECUTABLE="${KARAF_SERVICE_EXECUTABLE}" # # Karaf # http://git-wip-us.apache.org/repos/asf/karaf/blob/d413eef2/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init index 7802833..7c8bbbe 100644 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init @@ -64,7 +64,7 @@ do_start() { rm -f $KARAF_SERVICE_PIDFILE fi fi - + mkdir -p $(dirname $KARAF_SERVICE_LOG) cat /dev/null > $KARAF_SERVICE_LOG chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP $KARAF_SERVICE_LOG @@ -74,10 +74,15 @@ do_start() { if [ ! -z "$KARAF_SERVICE_USER" ]; then su - $KARAF_SERVICE_USER \ - -c " { $KARAF_SERVICE_PATH/bin/karaf daemon >> $KARAF_SERVICE_LOG 2>&1 & } ; echo \$! >| $KARAF_SERVICE_PIDFILE " + -c " { $KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE daemon >> $KARAF_SERVICE_LOG 2>&1 & } ; echo \$! >| $KARAF_SERVICE_PIDFILE " + + sleep 1 + if [ -f $KARAF_SERVICE_PIDFILE ]; then + chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP $KARAF_SERVICE_PIDFILE + fi fi - - RETVAL=$? + + RETVAL=$? return $RETVAL } @@ -89,8 +94,9 @@ do_stop() { read kpid < $KARAF_SERVICE_PIDFILE let kwait=$SHUTDOWN_WAIT - # Try issuing SIGTERM - su - $KARAF_SERVICE_USER -c $KARAF_SERVICE_PATH/bin/stop + su - $KARAF_SERVICE_USER \ + -c "$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE stop >> $KARAF_SERVICE_LOG 2>&1" + until [ `ps -p $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ] do sleep 1 @@ -98,7 +104,9 @@ do_stop() { done if [ $count -gt $kwait ]; then - kill -9 $kpid + if [ `ps -p $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then + kill -9 $kpid + fi fi fi http://git-wip-us.apache.org/repos/asf/karaf/blob/d413eef2/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-debian ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-debian b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-debian index c2ec44f..5de9cfb 100644 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-debian +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-debian @@ -18,7 +18,7 @@ # # ### BEGIN INIT INFO -# Provides: ${KARAF_SERVICE_NAME} +# Provides: ${KARAF_SERVICE_NAME} # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Should-Start: $named @@ -29,8 +29,8 @@ # Description: Provide Karaf startup/shutdown script ### END INIT INFO -NAME=${KARAF_SERVICE_NAME} -DESC="Karaf" +NAME=${KARAF_SERVICE_NAME} +DESC=${KARAF_SERVICE_NAME} DEFAULT="/etc/default/$NAME" # Check privileges @@ -119,7 +119,7 @@ case "$1" in cat /dev/null > "$KARAF_SERVICE_LOG" chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP $(dirname "$KARAF_SERVICE_LOG") chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP $KARAF_SERVICE_LOG - + start-stop-daemon \ --start \ --user "$KARAF_SERVICE_USER" \ @@ -127,7 +127,7 @@ case "$1" in --chdir "$KARAF_SERVICE_PATH" \ --pidfile "$KARAF_SERVICE_PIDFILE" \ --make-pidfile \ - --exec "$KARAF_SERVICE_PATH/bin/karaf" -- "daemon" \ + --exec "$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE" -- "daemon" \ >> "$KARAF_SERVICE_LOG" 2>&1 & count=0 @@ -160,10 +160,11 @@ case "$1" in kwait=$SHUTDOWN_WAIT read kpid < "$KARAF_SERVICE_PIDFILE" log_daemon_msg "Stopping $DESC" "$NAME" - + children_pids=$(pgrep -P $kpid) - su - $KARAF_SERVICE_USER -c $KARAF_SERVICE_PATH/bin/stop + su - $KARAF_SERVICE_USER \ + -c "$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 ] @@ -181,17 +182,17 @@ case "$1" in --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 @@ -224,7 +225,7 @@ case "$1" in log_action_msg "$DESC is not running" exit 3 else - log_action_msg "Unable to determine $NAME status" + log_action_msg "Unable to determine $DESC status" exit 4 fi ;; http://git-wip-us.apache.org/repos/asf/karaf/blob/d413eef2/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-redhat ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-redhat b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-redhat index 00221a8..ba0fde3 100644 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-redhat +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.init-redhat @@ -61,7 +61,7 @@ start() { rm -f $KARAF_SERVICE_PIDFILE fi fi - + mkdir -p $(dirname $KARAF_SERVICE_LOG) cat /dev/null > $KARAF_SERVICE_LOG chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP $KARAF_SERVICE_LOG @@ -74,20 +74,24 @@ start() { daemon \ --user="$KARAF_SERVICE_USER" \ --pidfile="$KARAF_SERVICE_PIDFILE" \ - " { $KARAF_SERVICE_PATH/bin/karaf daemon >> $KARAF_SERVICE_LOG 2>&1 & } ; echo \$! >| $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 daemon >> $KARAF_SERVICE_LOG 2>&1 & } ; echo \$! >| $KARAF_SERVICE_PIDFILE " + -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 } @@ -100,7 +104,9 @@ stop() { let kwait=$SHUTDOWN_WAIT # Try issuing SIGTERM - su - $KARAF_SERVICE_USER -c $KARAF_SERVICE_PATH/bin/stop + su - $KARAF_SERVICE_USER \ + -c "$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 http://git-wip-us.apache.org/repos/asf/karaf/blob/d413eef2/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.solaris-smf ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.solaris-smf b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.solaris-smf index c409c78..7055b2d 100644 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.solaris-smf +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.solaris-smf @@ -24,16 +24,16 @@ <service_bundle type="manifest" name="application/${KARAF_SERVICE_NAME}"> <service version="1" type="service" name="application/${KARAF_SERVICE_NAME}"> - + <create_default_instance enabled='false' /> - <single_instance /> + <single_instance /> - <dependency - restart_on="none" + <dependency + restart_on="none" type="service" - name="multi_user_dependency" + name="multi_user_dependency" grouping="require_all"> - + <service_fmri value="svc:/milestone/multi-user"/> </dependency> @@ -48,36 +48,36 @@ <!-- STOP/START --> <!-- *************************************************************** --> - <exec_method - timeout_seconds="60" - type="method" + <exec_method + timeout_seconds="60" + type="method" name="start" - exec="${KARAF_SERVICE_PATH}/bin/karaf daemon &"> + exec="${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon &"> </exec_method> - <exec_method - timeout_seconds="60" - type="method" + <exec_method + timeout_seconds="60" + type="method" name="stop" - exec="${KARAF_SERVICE_PATH}/bin/stop"> + exec="${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop"> </exec_method> - + <!-- *************************************************************** --> <!-- --> <!-- *************************************************************** --> <!-- do not restart the service in case of errors --> <property_group name='startd' type='framework'> - <propval name='duration' - type='astring' + <propval name='duration' + type='astring' value='transient'/> - <propval name='ignore_error' - type='astring' + <propval name='ignore_error' + type='astring' value='core,signal'/> </property_group> <stability value='Evolving' /> - + <template> <common_name> <loctext xml:lang="C"> http://git-wip-us.apache.org/repos/asf/karaf/blob/d413eef2/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd index 72954ec..828319c 100644 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd @@ -21,13 +21,13 @@ After=syslog.target network.target [Service] EnvironmentFile=${KARAF_SERVICE_CONF} -Environment="KARAF_OPTS=-Dkaraf.systemd.enabled=true" +#Environment="KARAF_OPTS=-Dkaraf.systemd.enabled=true" User=${KARAF_SERVICE_USER} Group=${KARAF_SERVICE_GROUP} PIDFile=${KARAF_SERVICE_PIDFILE} -ExecStart=${KARAF_SERVICE_PATH}/bin/karaf daemon -ExecStop=${KARAF_SERVICE_PATH}/bin/stop +ExecStart=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon +ExecStop=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop Restart=on-failure RestartSec=5s http://git-wip-us.apache.org/repos/asf/karaf/blob/d413eef2/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-win.xml ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-win.xml b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-win.xml index 5b2f420..9dd4baa 100644 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-win.xml +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-win.xml @@ -22,6 +22,10 @@ KARAF_SERVICE_NAME KARAF_SERVICE_PATH + KARAF_SERVICE_EXECUTABLE + + For a detailed overview of the confguration options, please visit winsw home + page (https://github.com/kohsuke/winsw) --> <id>%KARAF_SERVICE_NAME%</id> @@ -29,11 +33,11 @@ <description>Apache Karaf %KARAF_SERVICE_NAME%</description> <!-- start --> - <executable>%KARAF_SERVICE_PATH%\bin\karaf.bat</executable> + <executable>%KARAF_SERVICE_PATH%\bin\%KARAF_SERVICE_EXECUTABLE%</executable> <startargument>daemon</startargument> <!-- stop --> - <stopexecutable>%KARAF_SERVICE_PATH%\bin\karaf.bat</stopexecutable> + <stopexecutable>%KARAF_SERVICE_PATH%\bin\%KARAF_SERVICE_EXECUTABLE%</stopexecutable> <stopargument>stop</stopargument> <stoptimeout>10sec</stoptimeout> http://git-wip-us.apache.org/repos/asf/karaf/blob/d413eef2/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh index 7929668..a7a4c55 100755 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh @@ -18,19 +18,20 @@ function usage { cat <<-END >&2 - USAGE: $0 [-k KARAF_SERVICE_PATH] [-d KARAF_SERVICE_DATA] [-p KARAF_SERVICE_PIDFILE] [-n KARAF_SERVICE_NAME] [-e KARAF_ENV, ...] - -k KARAF_SERVICE_PATH # Karaf installation path - -d KARAF_SERVICE_DATA # Karaf data path (default to \${KARAF_SERVICE_PATH}/data) - -c KARAF_SERVICE_CONF # Karaf configuration file - -t KARAF_SERVICE_ETC # Karaf etc path (default to \${KARAF_SERVICE_PATH/etc} - -p KARAF_SERVICE_PIDFILE # Karaf pid path (default to \${KARAF_SERVICE_DATA}/\${KARAF_SERVICE_NAME}.pid) - -n KARAF_SERVICE_NAME # Karaf service name (default karaf) - -e KARAF_ENV # Karaf environment variable (can be repeated) - -u KARAF_SERVICE_USER # Karaf user - -g KARAF_SERVICE_GROUP # Karaf group (default \${KARAF_SERVICE_USER) - -l KARAF_SERVICE_LOG # Karaf console log (default to \${KARAF_SERVICE_DATA}/log/\${KARAF_SERVICE_NAME}-console.log) - -f KARAF_SERVICE_TEMPLATE # Template file to use - -h # this usage message + USAGE: $0 + -k KARAF_SERVICE_PATH # Karaf installation path + -d KARAF_SERVICE_DATA # Karaf data path (default to \${KARAF_SERVICE_PATH}/data) + -c KARAF_SERVICE_CONF # Karaf configuration file (default to \${KARAF_SERVICE_PATH/etc/\${KARAF_SERVICE_NAME}.conf + -t KARAF_SERVICE_ETC # Karaf etc path (default to \${KARAF_SERVICE_PATH/etc} + -p KARAF_SERVICE_PIDFILE # Karaf pid path (default to \${KARAF_SERVICE_DATA}/\${KARAF_SERVICE_NAME}.pid) + -n KARAF_SERVICE_NAME # Karaf service name (default karaf) + -e KARAF_ENV # Karaf environment variable (can be repeated) + -u KARAF_SERVICE_USER # Karaf user + -g KARAF_SERVICE_GROUP # Karaf group (default \${KARAF_SERVICE_USER) + -l KARAF_SERVICE_LOG # Karaf console log (default to \${KARAF_SERVICE_DATA}/log/\${KARAF_SERVICE_NAME}-console.log) + -f KARAF_SERVICE_TEMPLATE # Template file to use + -x KARAF_SERVICE_EXECUTABLE # Karaf executable name (defaul karaf, should support daemon and stop commands) + -h # this usage message END exit } @@ -47,12 +48,12 @@ SOLARIS_SMF_TEMPLATE="karaf-service-template.solaris-smf" KARAF_ENV=() -while getopts k:d:c:p:n:u:g:l:t:e:f:h opt +while getopts k:d:c:p:n:u:g:l:t:e:f:x:h opt do case $opt in k) export KARAF_SERVICE_PATH=$OPTARG ;; - d) export KARAF_SERVICE_DATA=$OPTARG ;; - c) export KARAF_SERVICE_CONF=$OPTARG ;; + d) export KARAF_SERVICE_DATA=$OPTARG ;; + c) export KARAF_SERVICE_CONF=$OPTARG ;; p) export KARAF_SERVICE_PIDFILE=$OPTARG ;; n) export KARAF_SERVICE_NAME=$OPTARG ;; u) export KARAF_SERVICE_USER=$OPTARG ;; @@ -60,6 +61,7 @@ do l) export KARAF_SERVICE_LOG=$OPTARG ;; t) export KARAF_SERVICE_ETC=$OPTARG ;; f) export KARAF_SERVICE_TEMPLATE=$OPTARG ;; + x) export KARAF_SERVICE_EXECUTABLE=$OPTARG ;; e) KARAF_ENV+=($OPTARG) ;; h|?) usage ;; esac @@ -67,43 +69,47 @@ done shift $(( $OPTIND - 1 )) -if [[ ! $KARAF_SERVICE_PATH ]]; then +if [[ ! $KARAF_SERVICE_PATH ]]; then echo "Warning, KARAF_SERVICE_PATH is required" usage fi -if [[ ! $KARAF_SERVICE_DATA ]]; then +if [[ ! $KARAF_SERVICE_DATA ]]; then export KARAF_SERVICE_DATA=${KARAF_SERVICE_PATH}/data fi -if [[ ! $KARAF_SERVICE_ETC ]]; then +if [[ ! $KARAF_SERVICE_ETC ]]; then export KARAF_SERVICE_ETC=${KARAF_SERVICE_PATH}/etc fi -if [[ ! $KARAF_SERVICE_CONF ]]; then +if [[ ! $KARAF_SERVICE_CONF ]]; then export KARAF_SERVICE_CONF=${KARAF_SERVICE_PATH}/etc/${KARAF_SERVICE_NAME}.conf fi -if [[ ! $KARAF_SERVICE_NAME ]]; then +if [[ ! $KARAF_SERVICE_NAME ]]; then export KARAF_SERVICE_NAME="karaf" fi -if [[ ! $KARAF_SERVICE_PIDFILE ]]; then +if [[ ! $KARAF_SERVICE_PIDFILE ]]; then export KARAF_SERVICE_PIDFILE=${KARAF_SERVICE_DATA}/${KARAF_SERVICE_NAME}.pid fi -if [[ ! $KARAF_SERVICE_LOG ]]; then +if [[ ! $KARAF_SERVICE_LOG ]]; then export KARAF_SERVICE_LOG=${KARAF_SERVICE_DATA}/log/${KARAF_SERVICE_NAME}-console.log fi -if [[ ! $KARAF_SERVICE_USER ]]; then +if [[ ! $KARAF_SERVICE_USER ]]; then export KARAF_SERVICE_USER="root" fi -if [[ ! $KARAF_SERVICE_GROUP ]]; then +if [[ ! $KARAF_SERVICE_GROUP ]]; then export KARAF_SERVICE_GROUP=${KARAF_SERVICE_USER} fi +if [[ ! $KARAF_SERVICE_EXECUTABLE ]]; then + export KARAF_SERVICE_EXECUTABLE="karaf" +fi + ################################################################################ # ################################################################################
