• 集群节点批量执行 shell 命令


    1、SSH 工具本身支持多窗口

    比如 MobaXterm
    在这里插入图片描述
    在这里插入图片描述

    2、编写脚本通过 ssh 在多台机器批量执行shell命令

    创建 ssh_hosts 配置文件,定义需要批量执行的节点(必须能够通过 ssh 免密登录,且存在同名用户)

    vim ssh_hosts
    
    • 1
    bigdata0
    bigdata1
    
    • 1
    • 2

    创建 dosshcmd.sh 脚本:

    vim dosshcmd.sh
    
    • 1
    #! /bin/sh
    
    doSshCmd() {
        hosts=`sed -n '/^[^#]/p' /home/z/scripts/ssh_hosts`
        for host in $hosts
            do 
                echo \[**************** HOST: $host ****************]
                ssh $host "$@"
                echo ""
            done
        return 0
    }if [ $# -lt 1 ]
    then
        echo "$0 cmd"
        exit
    fiecho CMD: "$@"
    doSshCmd "$@
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    赋予执行权限

    chmod u+x dosshcmd.sh
    
    • 1

    3、验证:

    1) 验证简单命令:
    [root@bigdata0 scripts]# ./dosshcmd.sh free -g
    CMD: free -g
    [**************** HOST: bigdata0 ****************]
                  total        used        free      shared  buff/cache   available
    Mem:             93          13          31           0          49          79
    Swap:             3           0           3[**************** HOST: bigdata1 ****************]
                  total        used        free      shared  buff/cache   available
    Mem:             93          15           2           0          75          77
    Swap:             3           0           3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    2) 验证脚本执行:

    编写一个通过 jps 找到 pid,然后通过 ps 查看进程信息的简单脚本:

    vim find_java_resources.sh
    
    • 1
    #! /bin/shpids=`jps|grep -i "$1"| cut -d ' ' -f 1`
    echo ----find pids: $pids
    for pid in $pids
    do
        echo ----PID: $pid----
        if [ $# -eq 1 ];
        then 
            ps -q $pid -aux|awk '{print $1, $2, $3, $4, $5, $6, $7, $8, $9, $10}'|column -t 
        else
            ps -q $pid ${@:2}|awk '{print $1, $2, $3, $4, $5, $6, $7, $8, $9, $10}'|column -t
        fi
        echo " "
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    赋予执行权限

    chmod u+x find_java_resources.sh
    
    • 1

    分发:

    [root@bigdata0 scripts]# scp find_java_resources.sh bigdata1:`pwd`
    find_java_resources.sh                              100%  265     0.3KB/s   00:00    
    [root@bigdata0 scripts]#
    
    • 1
    • 2
    • 3

    查看集群每个节点 yarn 任务资源占用

    [root@bigdata0 scripts]# ./dosshcmd.sh /home/z/scripts/find_java_resources.sh yarn
    CMD: /home/z/scripts/find_java_resources.sh yarn
    [**************** HOST: bigdata0 ****************]
    ----find pids: 31878 31879
    ----PID: 31878----
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME
    root     31878 24.7  1.2 26774340 1204428 ?    Sl   11:10   2:49 
     
    ----PID: 31879----
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME
    root     31879 25.9  1.2 26743664 1210208 ?    Sl   11:10   2:57
     
    ​
    [**************** HOST: bigdata1 ****************]
    ----find pids: 30703
    ----PID: 30703----
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME
    root     30703 24.4  2.9 26776844 2854336 ?    Sl   11:14   2:48 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    也可以用 watch 监控

    watch "./dosshcmd.sh /home/z/scripts/find_java_resources.sh yarn"
    
    • 1
  • 相关阅读:
    blender 快捷键 常见问题
    最新区块链论文速读--CCF A会议 INFOCOM 2023 共5篇 附pdf下载
    基于JavaSwing开发的坦克大战游戏 课程设计 大作业 毕业设计
    并发编程day03
    金仓数据库KingbaseES物理备份恢复命令选项(start命令)
    周亚军 红宝书 案例 3 telnet远程管理协议
    根据实体类生成表生成语句
    29-Gin框架中间件详解
    如何在Ubuntu 22.04使用wine安装windows版本微信
    ChatGPT在电子健康记录和医疗信息查询中的应用前景如何?
  • 原文地址:https://blog.csdn.net/zhy1379/article/details/134096898