案例一:获取上上月月末日期
#!/bin/bash
v_curr_rq=`date +%Y%m%d`
v_rq=`date -d "yesterday" +%Y%m%d`
v_lm=`date +%Y%m01`
v_lm_rq=`date -d "${v_lm} last day" +%Y%m%d`
v_llm_rq=`date -d "${v_lm} last month last day" +%Y%m%d`
#当前日期
echo ${v_curr_rq}
#昨天日期
echo ${v_rq}
#本月月初
echo ${v_lm}
#上个月月初
firstday=`date -d "last month" +%Y%m01`
echo $firstday
#上个月月末
echo ${v_lm_rq}
#上上个月月末
echo ${v_llm_rq}
案例二:Linux集群分发脚本xsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
# 也可以采用:
# for host in hadoop{10..12};
for host in hadoop10 hadoop11 hadoop12
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
echo pdir=$pdir
#6. 获取当前文件的名称
fname=$(basename $file)
echo fname=$fname
#7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)
ssh $host "mkdir -p $pdir"
#8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下
rsync -av $pdir/$fname $USER@$host:$pdir
else
echo $file does not exists!
fi
done
done
修改脚本 xsync 具有执行权限
[hadoop@hadoop10 bin]$ chmod 777 xsync
调用脚本形式:xsync 文件名称
[hadoop@hadoop10 bin]$ xsync /home/hadoop/bin
注意:如果将xsync放到/home/zxy/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。
案例三:启动、停止、查看(状态)zookeeper集群脚本
#!/bin/bash
NODENAME_ARR=('hadoop10' 'hadoop11' 'hadoop12')
echo '' > zk.log
if [ $# -eq 0 ]; then
echo -e "请带参数执行脚本.如:\n zk.sh start \n zk.sh status \n zk.sh stop\n"
exit 1
fi
if [ $1 == 'start' ] ;then
for nodename in ${NODENAME_ARR[@]}
do
echo -n "${nodename} zk正在启动..."
echo ${nodename} >> zk.log
ssh $nodename "source /etc/profile;/home/hadoop/apps/zookeeper/bin/zkServer.sh start" >>zk.log 2>&1
if [ $? == 0 ];then
echo " ${nodename} zk启动成功"
else
echo " ${nodename} zk启动失败"
fi
# sleep 2s
done
elif [ $1 == 'stop' ] ;then
for nodename in ${NODENAME_ARR[@]}
do
echo -n "${nodename} zk正在关闭..."
echo ${nodename} >> zk.log
ssh $nodename "/home/hadoop/apps/zookeeper/bin/zkServer.sh stop" >>zk.log 2>&1
if [ $? == 0 ];then
echo " ${nodename} zk关闭成功"
else
echo " ${nodename} zk关闭失败"
fi
done
elif [ $1 == 'status' ] ;then
for nodename in ${NODENAME_ARR[@]}
do
echo -n "${nodename} zk正在查看状态..."
ssh $nodename ". /etc/profile;/home/hadoop/apps/zookeeper/bin/zkServer.sh status"
done
fi
案例四:启动kafka集群
#!/bin/bash
if [ $# -eq 0 ]; then
echo -e "请带参数执行脚本.如:\n kafka.sh start \n kafka.sh stop\n"
exit 1
fi
case $1 in
"start"){
for i in hadoop10 hadoop11 hadoop12
do
ssh $i "source /etc/profile;/home/hadoop/apps/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/apps/kafka/config/server.properties"
if [ $? == 0 ];then
echo " $i启动成功"
else
echo " $i启动失败"
fi
done
};;
"stop"){
for i in hadoop10 hadoop11 hadoop12
do
ssh $i "source /etc/profile;/home/hadoop/apps/kafka/bin/kafka-server-stop.sh /home/hadoop/apps/kafka/config/server.properties"
if [ $? == 0 ];then
echo " $i关闭成功"
else
echo " $i关闭失败"
fi
done
};;
esac