blob: 6482fc32932c1a1ad4123fb84f0a8e97037a82e9 [file] [log] [blame]
#!/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