#!/bin/bash
MY_PATH=`cd $(dirname $0); pwd`
EXEC_TIME=`date +%Y%m%d-%H-%M-%S`
KAFKA_HOME=/opt/data/kafka/kafka_2.13-3.4.0
KAFKA_LOG=/opt/data/kafka/kafka_2.13-3.4.0/logs
KAFKA_DATA=/opt/data/kafka/kafka_2.13-3.4.0/logs/kafka
ZK_DATA=/opt/data/kafka/kafka_2.13-3.4.0/logs/zk
EXEC_ACTION=$1
IS_KAFKA_RUNNING=`ps -ef|grep kafka|grep -v grep|grep server.properties|wc -l`
IS_ZOOKEEPER_RUNNING=`ps -ef|grep kafka|grep -v grep|grep zookeeper.properties|wc -l`
function exec_start_zookeeper () {
if [ ${IS_ZOOKEEPER_RUNNING} -eq 0 ];then
echo -e "starting zookeeper ... ..."
# start zookeeper process
cd ${MY_PATH}
cd ${KAFKA_HOME}
nohup ${KAFKA_HOME}/bin/zookeeper-server-start.sh ${KAFKA_HOME}/config/zookeeper.properties > ${ZK_DATA}/zookeeper.log 2>&1 &
if [ $? -eq 0 ];then
echo -e "zookeeper start successed."
else
echo -e "zookeeper start failed"
exit 1
fi
else
echo -e "zookeeper is already running"
fi
}
function exec_start_kafka () {
if [ ${IS_KAFKA_RUNNING} -eq 0 ];then
echo -e "starting kafka ... ..."
# start kafka process
cd ${MY_PATH}
cd ${KAFKA_HOME}
nohup ${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties > ${KAFKA_DATA}/kafka.log 2>&1 &
if [ $? -eq 0 ];then
echo -e "kafka start successed."
else
echo -e "kafka start failed"
exit 1
fi
else
echo -e "kafka is already running"
fi
}
function exec_stop_kafka () {
if [ ${IS_KAFKA_RUNNING} -eq 1 ];then
echo -e "stoping kafka ... ..."
# stop kafka process
cd ${MY_PATH}
cd ${KAFKA_HOME}
/bin/bash ./bin/kafka-server-stop.sh
if [ $? -eq 0 ];then
echo -e "kafka stop successed."
else
echo -e "kafka stop failed"
fi
elif [ ${IS_KAFKA_RUNNING} -eq 0 ];then
echo -e "kafka is already stoped"
else
echo -e "unknown error"
fi
}
function exec_stop_zookeeper () {
if [ ${IS_ZOOKEEPER_RUNNING} -eq 1 ];then
echo -e "stoping kafka ... ..."
# stop zookeeper process
cd ${MY_PATH}
cd ${KAFKA_HOME}
/bin/bash ./bin/zookeeper-server-stop.sh
if [ $? -eq 0 ];then
echo -e "zookeeper stop successed."
else
echo -e "zookeeper stop failed"
fi
elif [ ${IS_ZOOKEEPER_RUNNING} -eq 0 ];then
echo -e "zookeeper is already stoped"
else
echo -e "unknown error"
fi
}
function exec_clean_kafka () {
cd ${MY_PATH}
# backup before clean
cd ${KAFKA_LOG}
tar -zcvf kafka-${EXEC_TIME}.tar.gz kafka > /dev/null 2>&1
tar -zcvf zk-${EXEC_TIME}.tar.gz zk > /dev/null 2>&1
# clean kafka data
cd ${KAFKA_HOME}
/usr/bin/rm -rf ${KAFKA_DATA}/*
if [ $? -eq 0 ];then echo "clean kafka data successful";fi
# clean zk data
for files in `ls ${ZK_DATA}/|grep -v myid`;do /usr/bin/rm -rf ${ZK_DATA}/${files};done
if [ $? -eq 0 ];then echo "clean zookeeper data successful";fi
}
function exec_case () {
case "${EXEC_ACTION}" in
"start")
echo -e "waiting for ${EXEC_ACTION}"
exec_start_zookeeper
sleep 20
exec_start_kafka
;;
"stop")
echo -e "waiting for ${EXEC_ACTION}"
exec_stop_kafka
exec_stop_zookeeper
;;
"restart")
echo -e "waiting for ${EXEC_ACTION}"
exec_stop_kafka
exec_stop_zookeeper
sleep 5
exec_start_zookeeper
sleep 20
exec_start_kafka
;;
"clean")
echo -e "waiting for ${EXEC_ACTION}"
exec_stop_kafka
exec_stop_zookeeper
sleep 10
exec_clean_kafka
echo -e "kafka is stoped,please run 'kafka.sh start' to start server"
;;
*)
echo -e "Usage: ${MY_PATH}/kafka.sh [start|stop|restart|clean]"
exit 1
;;
esac
}
main () {
exec_case
}
main
网友评论