hadoop机器集群关机脚本

hadoop机器集群关机脚本

由于在学习hadoop时,关闭机器非常的麻烦,所以我搞了个脚本方便我能够更快的关闭机器。

1.创建.sh文件并编写脚本

[root@hadoop11 ~]# cd /home/bin
[root@hadoop11 bin]# vim shutdown_cluster.sh
#!/bin/bash

# 定义要关机的机器列表

MACHINES=("hadoop12" "hadoop13" "hadoop14")

# 定义日志文件路径

LOG_FILE="/home/shutdown.log"

# 函数:记录日志

log_action() {
  local machine_name="$1"
  local result="$2"
  local timestamp=$(date +"%Y年%m月%d日%H时%M分%S秒")
  echo "$machine_name,日期:$timestamp,$result" >> "$LOG_FILE"
}

# 函数:执行关机操作并记录日志

perform_shutdown() {
  local machine_name="$1"
  local timestamp=$(date +"%Y年%m月%d日%H时%M分%S秒")  # 引入timestamp变量
  log_action "$machine_name" "开始关机"

  # 使用timeout来控制SSH连接和关机操作的超时,并将命令置于后台

  timeout 1 ssh -q "$machine_name" "sudo shutdown -h now" &
  local ssh_pid=$!

  # 立即执行后续代码,不等待timeout的完成

  # 可以添加其他需要在关机期间执行的命令

  # 在这里执行其他操作...

  # 使用wait命令等待timeout的完成

  wait $ssh_pid
  local exit_status=$?  # 将exit_status在这里声明并初始化

  if [ $exit_status -eq 0 ]; then
    log_action "$machine_name" "关机成功"
    echo "$machine_name,关机完成"
  else
    if [ $exit_status -eq 124 ]; then
      log_action "$machine_name" "SSH连接超时"
      echo "$machine_name,关机失败:SSH连接超时"
    else
      log_action "$machine_name" "关机可能成功,需查看确认"
      echo "$machine_name,关机可能成功,需查看确认"
    fi
  fi
}

# 检查日志文件是否存在,不存在则创建

if [ ! -f "$LOG_FILE" ]; then
    touch "$LOG_FILE"
fi

# 遍历机器列表,并关机每台机器

for MACHINE in "${MACHINES[@]}"; do
    perform_shutdown "$MACHINE"
done

# 本地关机

log_action "本机" "开始关机"
timestamp=$(date +"%Y年%m月%d日%H时%M分%S秒")  # 更新timestamp变量
echo "$machine_name,关机完成"

# 使用timeout来控制本地关机操作的超时,并将命令置于后台

timeout 1 sudo shutdown -h now &
#local shutdown_pid=$!

# 在下面执行其他本机关机前的操作:

# 下面这个一般在本机关机后是运行不了的,日志不会做记录

if [ $? -eq 0 ]; then
    log_action "本机" "关机成功"
    echo "本机,关机完成"
else
    if [ $? -eq 124 ]; then
      log_action "本机" "SSH连接超时"
      echo "本机,关机失败:SSH连接超时"
    else
      log_action "本机" "关机可能成功,需查看确认"
      echo "本机,关机可能成功,需查看确认"
    fi
fi

# 使用wait命令等待本机关机的完成

wait $shutdown_pid

# 本机关机后的操作...


代码还有些bug,但不影响使用

:wq

2.赋权给shutdown_cluster.sh文件

[root@hadoop11 bin]# chmod +x /home/bin/shutdown_cluster.sh

3.创建日志文件

[root@hadoop11 bin]# vim /home/shutdown.log

创建后直接退出

:q

4.赋权给日志文件

[root@hadoop11 bin]# chmod 777 /home/shutdown.log

5.建立软链接my_stop

[root@hadoop11 bin]# ln -s /home/bin/shutdown_cluster.sh /usr/local/bin/my_stop

6.运行脚本

[root@hadoop11 bin]# my_stop
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值