diff options
Diffstat (limited to 'qpid/java/broker/bin/qpid.stop')
-rw-r--r-- | qpid/java/broker/bin/qpid.stop | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/qpid/java/broker/bin/qpid.stop b/qpid/java/broker/bin/qpid.stop new file mode 100644 index 0000000000..6482fc3293 --- /dev/null +++ b/qpid/java/broker/bin/qpid.stop @@ -0,0 +1,137 @@ +#!/bin/bash +# +# 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. +# + +# qpid.stop Script +# +# Script checks for a given pid running PROGRAM and attempts to quit it +# + +MAX_ATTEMPTS=1 +SLEEP_DELAY=1 +PROGRAM="DQPID" + + +# +# Print what is going to be done +# +printActions() +{ +#ps=`ps o command p $1|grep $PROGRAM` +ps=`ps -o args -p $1|grep $PROGRAM` +echo "Attempting to kill: $ps" +} + +# +# Forcably Quit the specified PID($1) +# +forceQuit() +{ +kill -9 $1 +} + + +# +# Gracefully ask the PID($1) to quit +# +quit() +{ +kill $1 +} + +# +# Grep the ps log for the PID ($1) to ensure that it has quit +# +lookup() +{ +result=`ps -o args -p $1 |grep -v grep |grep $PROGRAM |wc -l` +} + +# +# Sleep and then check then lookup the PID($1) to ensure it has quit +# +check() +{ +echo "Waiting $SLEEP_DELAY second for $1 to exit" +sleep $SLEEP_DELAY +lookup $1 +} + + + +# +# Verify the PID($1) is available +# +verifyPid() +{ +lookup $1 +if [[ $[$result] == 1 ]] ; then + brokerspid=$1 +else + echo "Unable to locate Qpid Process with PID $1" + exit -1 +fi +} + +# +# Main Run +# + +# Check if we are killing all qpid pids or just one. +if [[ $# == 0 ]] ; then + echo "Killing All Qpid Brokers for user: '$USER'" + qpid.stopall + exit $? +else + verifyPid $1 +fi + +printActions $brokerspid + +# Attempt to quit the process MAX_ATTEMPTS Times +attempt=0 +while [[ $[$result] > 0 && $[$attempt] < $[$MAX_ATTEMPTS] ]] ; do + quit $brokerspid + check $brokerspid + attempt=$[$attempt + 1] +done + +# Check that it has quit +if [[ $[$result] == 0 ]] ; then + echo "Process quit" + exit 0 +else + + # Now attempt to force quit the process + attempt=0 + while [[ $[$result] > 0 && $[$attempt] < $[$MAX_ATTEMPTS] ]] ; do + forceQuit $brokerspid + check $brokerspid + attempt=$[$attempt + 1] + done + + + # Output final status + if [[ $[$result] > 0 && $[$attempt] == $[$MAX_ATTEMPTS] ]] ; then + echo "Stopped trying to kill process: $brokerspid" + echo "Attempted to stop $attempt times" + else + echo "Done " + fi +fi |