hbase/bin/test/process_based_cluster.sh

111 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
#
#/**
# * Copyright The Apache Software Foundation
# *
# * 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.
# */
set -e -u -o pipefail
SCRIPT_NAME=${0##*/}
SCRIPT_DIR=$(cd `dirname $0` && pwd )
print_usage() {
cat >&2 <<EOT
Usage: $SCRIPT_NAME <options>
Options:
--kill
Kill local process-based HBase cluster using pid files.
--show
Show HBase processes running on this machine
EOT
exit 1
}
show_processes() {
ps -ef | grep -P "(HRegionServer|HMaster|HQuorumPeer) start" | grep -v grep
}
cmd_specified() {
if [ "$CMD_SPECIFIED" ]; then
echo "Only one command can be specified" >&2
exit 1
fi
CMD_SPECIFIED=1
}
list_pid_files() {
LOCAL_CLUSTER_DIR=$SCRIPT_DIR/../../target/local_cluster
LOCAL_CLUSTER_DIR=$( cd $LOCAL_CLUSTER_DIR && pwd )
find $LOCAL_CLUSTER_DIR -name "*.pid"
}
if [ $# -eq 0 ]; then
print_usage
fi
IS_KILL=""
IS_SHOW=""
CMD_SPECIFIED=""
while [ $# -ne 0 ]; do
case "$1" in
-h|--help)
print_usage ;;
--kill)
IS_KILL=1
cmd_specified ;;
--show)
IS_SHOW=1
cmd_specified ;;
*)
echo "Invalid option: $1" >&2
exit 1
esac
shift
done
if [ "$IS_KILL" ]; then
list_pid_files | \
while read F; do
PID=`cat $F`
echo "Killing pid $PID from file $F"
# Kill may fail but that's OK, so turn off error handling for a moment.
set +e
kill -9 $PID
set -e
done
elif [ "$IS_SHOW" ]; then
PIDS=""
for F in `list_pid_files`; do
PID=`cat $F`
if [ -n "$PID" ]; then
if [ -n "$PIDS" ]; then
PIDS="$PIDS,"
fi
PIDS="$PIDS$PID"
fi
done
ps -p $PIDS
else
echo "No command specified" >&2
exit 1
fi