大数据之Linux部署常用命令脚本封装

文章目录

    • 编写集群命令执行脚本
      • xcall集群命令执行
        • [1. 脚本需求](#1. 脚本需求)
        • [2. 需求分析](#2. 需求分析)
        • [3. 脚本实现](#3. 脚本实现)
          • [3.1 创建脚本存放目录](#3.1 创建脚本存放目录)
          • [3.2 编写xcall脚本](#3.2 编写xcall脚本)
          • [3.3 修改脚本执行权限](#3.3 修改脚本执行权限)
          • [3.4 测试脚本](#3.4 测试脚本)
    • 编写集群分发脚本
      • xsync集群分发脚本
        • [1. 脚本需求](#1. 脚本需求)
        • [2. 需求分析](#2. 需求分析)
        • [3. 脚本实现](#3. 脚本实现)
          • [3.1 创建脚本存放目录](#3.1 创建脚本存放目录)
          • [3.2 编写xsync脚本](#3.2 编写xsync脚本)
          • [3.3 修改脚本执行权限](#3.3 修改脚本执行权限)
          • [3.4 测试脚本](#3.4 测试脚本)

编写集群命令执行脚本

xcall集群命令执行

1. 脚本需求
  • 需求: 简化对多个远程主机执行相同命令的过程。允许用户通过一个单一的命令行调用,在一组预定义的主机上执行任意命令。方便集群管理和自动化任务,减少重复工作并提高效率。
2. 需求分析
  • 使用xcall 命令进行命令执行, 例如

    sh 复制代码
    xcall ls -al /
  • 期望脚本xcall 能够在所有预定义的主机上查看根目录/ 的内容。

3. 脚本实现
  • 脚本存放在/home/bigdata/bin目录下,在~/.bashrc中添加以下内容,以便bigdata用户可以在系统的任何位置直接执行。

    sh 复制代码
    export PATH=$PATH:/home/bigdata/bin
  • 使环境变量生效 source ~/.bashrc

3.1 创建脚本存放目录
  • /home/bigdata目录下创建bin文件夹:

    sh 复制代码
    mkdir bin
  • 脚本存放在/home/bigdata/bin目录下,以便bigdata用户可以在系统的任何位置直接执行。

3.2 编写xcall脚本
  • /home/bigdata/bin目录下创建xall文件:

    sh 复制代码
    cd /home/bigdata/bin
    vim xcall
  • 编写脚本内容:

    bash 复制代码
    #!/bin/bash
    # 定义主机名数组
    hosts=("hadoop101" "hadoop102" "hadoop103")
    # 检查是否有外部参数传递给脚本
    if [ $# -eq 0 ]; then
        echo "Usage: $0 <command>"
        exit 1
    fi
     # 遍历主机数组,对每个主机执行 SSH 命令
    for host in "${hosts[@]}"; do
        echo "-------- $host --------"
        ssh "$host" "$*"
    done
3.3 修改脚本执行权限
  • 使xcall脚本具有执行权限:

    sh 复制代码
    chmod +x xcall
3.4 测试脚本
  • 测试xcall脚本是否正常工作:

    sh 复制代码
    xcall ls -al /

编写集群分发脚本

xsync集群分发脚本

1. 脚本需求
  • 需求:实现循环复制文件到所有节点的相同目录下。
2. 需求分析
  • 使用rsync命令进行原始拷贝,例如:

    sh 复制代码
    rsync -av /opt/module bigdata@hadoop102:/opt/
  • 期望脚本xsync能够同步指定的文件名称。

3. 脚本实现
  • 脚本存放在/home/bigdata/bin目录下,以便bigdata用户可以在系统的任何位置直接执行。
3.1 创建脚本存放目录
  • /home/bigdata目录下创建bin文件夹:

    sh 复制代码
    mkdir bin
3.2 编写xsync脚本
  • /home/bigdata/bin目录下创建xsync文件:

    sh 复制代码
    cd /home/bigdata/bin
    vim xsync
  • 编写脚本内容:

    bash 复制代码
    #!/bin/bash
    
    hosts=("hadoop101" "hadoop102" "hadoop103")
    # 1. 判断参数个数
    if [ $# -lt 1 ]
    then
      echo "Not Enough Arguments!"
      exit 1
    fi
    
    # 2. 遍历集群所有机器
    for host in "${hosts[@]}"; do
      echo "====================  $host  ==================="
      # 3. 遍历所有目录,挨个发送
      for file in "$@"; do
        # 4. 判断文件是否存在
        if [ -e "$file" ]
        then
          # 5. 获取父目录
          pdir=$(cd -P "$(dirname "$file")"; pwd)
          # 6. 获取当前文件的名称
          fname=$(basename "$file")
          ssh $host "mkdir -p \"$pdir\""
          rsync -av "$pdir/$fname" "$host:$pdir"
        else
          echo "$file does not exist!"
        fi
      done
    done
3.3 修改脚本执行权限
  • 使xsync脚本具有执行权限:

    sh 复制代码
    chmod +x xsync
3.4 测试脚本
  • 测试xsync脚本是否正常工作:

    sh 复制代码
    xsync /path/to/file_or_directory
相关推荐
天疆说2 小时前
Ubuntu 26.04 下 Intel Meteor Lake 核显 + NPU 驱动配置与 PyTorch NPU 推理实测
linux·pytorch·ubuntu
自由能燃气设备2 小时前
燃气容积式热水器厂家选购指南:2026年商用热水设备采购避坑手册
大数据·数据库·数据仓库·人工智能
ApacheSeaTunnel2 小时前
从 60万行/秒说起,看 SeaTunnel Zeta 基准测试如何做到”测得准“
大数据·数据集成·基准测试·seatunnel·数据同步
mounter6252 小时前
突破单点限制:BPF 多跟踪点高效附加机制与新 ftrace 架构解析
linux·ebpf·linux kernel·kernel·ftrace
刘某的Cloud2 小时前
Galera Cluster部署 mariadb 节点down机,log sequence number恢复
linux·运维·数据库·负载均衡·mariadb·集群·高可用
小此方3 小时前
Re:Linux系统篇(五十四)线程篇 · 七:互斥锁的底层实现原理:从硬件上下文、原子交换指令(Swap)到并发封装实战
linux·运维·驱动开发
郭涤生3 小时前
rootfs 详解与裁剪优化记录
linux·c++·bsp
2601_963869953 小时前
【计算机毕业设计】基于Java的线上就医平台设计与实现
大数据·人工智能·课程设计
二宝哥4 小时前
CentOS 7.9 离线安装 Nginx 并配置openssl1.1.1
linux·nginx·centos
TDengine (老段)4 小时前
TDengine taosAdapter — 多协议网关详解
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据