Shell一键关闭Hadoop、Hive脚本

Shell一键关闭Hadoop、Hive脚本

#!/bin/bash

source /etc/profile

#一键关闭脚本配置文件
CNF_FILE="stop.cnf"

#读取配置文件中配置的服务项
CNF_LINES=(`cat $CNF_FILE`)
COUNT=0
for item in ${CNF_LINES[@]}
do
	((COUNT++))
	item=(${item//->/ })
	echo "$COUNT、${item[0]}"
done

#选择需要关闭的服务
read -p 'please make a choice : ' choice

#验证用户输入(必须为小于等于配置文件行数的整数)
if [[ $choice =~ ^[0-9]+$ ]]
then
    if [ $choice -gt $COUNT -o $choice -lt 1 ]
    then
        echo "choice must be between 1 and $COUNT,script will exit"
        exit 0
    fi
else
    echo 'choice must be a num,script will exit'
    exit 0
fi


#自定义函数调用服务自带脚本关闭服务
function stopSers(){
	LINE=$1
	LINE=(${LINE//@/ })
	SERS=${LINE[0]}
	SERS=${SERS//,/ }
	COUNT=0
	for item in $SERS
	do
		RST=`jps -ml|grep -w $item`
		if [[ $RST ]]
		then
			COUNT=1
			break
		fi
	done
	if [ $COUNT -eq 1 ]
	then
		RST=`${LINE[1]}`
		echo "STOPPED"
	else
		echo "NONE"
	fi
}

#自定义函数通过系统通用函数kill关闭服务
function killSers(){
	LINE=$1
	LINE=${LINE//,/ }
	COUNT=0
	for item in $LINE
	do
		PID=`jps -ml|grep -w $item|awk {'print $1'}`
		if [[ $PID ]]
		then
			PID=`kill -9 $PID`
			((COUNT++))
		fi
	done
	if [ $COUNT -gt 0 ]
    then
        echo "STOPPED"
    else
        echo "NONE"
    fi
}

#自定义函数根据参数类型和操作字符串关闭服务
function stopByLine(){
	SIGN=$1
	TYPE=$2
	LINE=$3
	case $TYPE in
	"STOP")
		LINE=${LINE//;/ }
		for item in $LINE
		do
			RST=`stopSers $item`
			item=(${item//@/ })
			item=${item[0]}
			case $RST in
			"STOPPED")
				echo 'services_[_'$item'_]_stopped'
			;;
			"NONE")
				echo 'no_services_[_'$item'_]_existed'
			;;
			esac
		done
	;;
	"KILL")
		RST=`killSers $LINE`
		case $RST in
        "STOPPED")
                echo 'services_[_'$LINE'_]_stopped'
        ;;
        "NONE")
        	echo 'no_services_[_'$LINE'_]_existed'
		;;
		esac
	;;
	esac
}

#自定义函数根据用户的选择后关闭服务
COUNT=0
while (( $COUNT<$choice ))
do
	LINE=${CNF_LINES[$COUNT]}
	LINE=${LINE//->/ }
	SIGN=${LINE[0]}
	TYPE=${LINE[1]}
	LINE=${LINE[2]}
	RST=`stopByLine $SIGN $TYPE $LINE`
	for item in $RST
	do
		echo ${item//_/ }
	done	
	((COUNT++))
done

#配置文件样式:服务->关闭服务类型->服务具体项1,服务具体项2@服务自带脚本关闭服务2;启动命令3,启动命令4@服务自带脚本关闭服务2
hive->KILL->HiveMetaStore,HiveServer2
hadoop->STOP->NameNode,SecondaryNameNode,DataNode@stop-dfs.sh;ResourceManager,NodeManager@stop-yarn.sh
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vicky_Tang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值