[ SHELL ] 利用shell脚本启动服务!
程序员文章站
2022-06-30 10:51:45
...
前言:当你的机器装完Hadoop、yarn、Hive、zookeeper、Hbase后,可利用下方shell脚本来一个“一键启动”。当然,如果后续还有服务需要启动时,可按照脚本上端的字符串格式进行编写。
一、编写启动服务的脚本文件
1.先输入命令:vi start.sh
,将下方代码复制进去,退出并保存。
#!/bin/bash
HB="hbase HMaster HRegionServer start-hbase.sh"
ZK="zookeeper QuorumPeerMain zkServer.sh_start"
HV="hive RunJar RunJar nohup_hive_--service_?>/dev/null_2>&1_&"
YN="yarn NodeManager ResourceManager start-yarn.sh"
HD="dfs DataNode SecondaryNameNode NameNode start-dfs.sh"
function checkStart(){
COUNT=0
ARR=[email protected]
ARR=($ARR)
SIZE=$(($#-2))
for i in `seq 1 $SIZE`
do
V=`jps|grep ${ARR[$i]}`
if [ "$V" ]
then
if [ $1 == "hive" ]
then
V=($V)
COUNT=$((${#V[*]}/2))
break
else
((COUNT++))
fi
fi
done
if [ $COUNT -eq $SIZE ]
then
echo "start $1 successfully"
else
echo "fail to start $1"
echo "we will rollback all those have been started ..."
exit 1
fi
}
function start(){
ARR=[email protected]
ARR=($ARR)
echo "start $1 ..."
OUTPUT=${ARR[$#-1]}
OUTPUT="${OUTPUT//_/ }"
if [[ $OUTPUT =~ ^nohup ]]
then
eval ${OUTPUT/\?/metastore}
sleep 15s
eval ${OUTPUT/\?/hiveserver2}
sleep 15s
else
OUTPUT=`$OUTPUT`
fi
checkStart [email protected]
}
start $HD
start $YN
start $HV
start $ZK
start $HB
2.此命令用来启动,在命令行模式中执行代码如下。
./start.sh #执行启动命令
二、编写停止服务的脚本文件
1.先输入命令:vi stop.sh
,将下方代码复制进去,退出并保存。
#!/bin/bash
HB="hbase HMaster HRegionServer stop-hbase.sh"
ZK="zookeeper QuorumPeerMain zkServer.sh_stop>~/zk.log_2>&1"
HV="hive RunJar RunJar kill"
YN="yarn NodeManager ResourceManager stop-yarn.sh"
HD="dfs DataNode SecondaryNameNode NameNode stop-dfs.sh"
function checkStop(){
STOP=0
ARR=[email protected]
ARR=($ARR)
for i in `seq 1 $(($#-2))`
do
V=`jps|grep ${ARR[$i]}`
if [ "$V" ]
then
((STOP++))
break
fi
done
if [ $STOP -eq 0 ]
then
echo "stop $1 successfully"
else
echo "fail to stop $1"
fi
}
function stop(){
ARR=[email protected]
ARR=($ARR)
COUNT=0
for i in `seq 1 $(($#-2))`
do
V=`jps|grep ${ARR[$i]}`
if [ "$V" ]
then
echo "start to stop $1 ..."
OUTPUT=${ARR[$#-1]}
((COUNT++))
if [ $OUTPUT = "kill" ]
then
PID=`jps|grep RunJar|awk 'NR==1 {print $1}'`
OUTPUT=`kill -9 $PID`
else
OUTPUT="${OUTPUT//_/ }"
OUTPUT=`eval $OUTPUT`
break
fi
fi
done
if [ $COUNT -eq 0 ]
then
echo "no $1 to stop"
else
checkStop [email protected]
fi
}
stop $HB
stop $ZK
stop $HV
stop $YN
stop $HD
2.此命令用来启动,在命令行模式中执行代码如下。
./stop.sh #执行关闭命令
三、编写总开关服务的脚本文件
1.先输入命令:vi hdctl.sh
,将下方代码复制进去,退出并保存。
#!/bin/bash
P=($*)
L=${#P[*]}
if [ $L -eq 0 ]
then
./start-all.sh
else
if [[ $1 =~ ^start$|^stop$|^restart$ ]]
then
if [[ $1 =~ ^stop|restart$ ]]
then
./stop-all.sh
fi
if [[ $1 =~ ^start|restart$ ]]
then
./start-all.sh
fi
else
echo "invalid argument : $1"
exit 1
fi
fi
2.此命令用来启动、关闭、重启各项服务,在命令行模式中执行代码如下。
./hdctl.sh start #启动
./hdctl.sh stop #关闭
./hdctl.sh restart #重启
上一篇: timeGetTime 找不到标识符
下一篇: 第四部分:模型融合