1、SSH 工具本身支持多窗口
比如 MobaXterm:
2、编写脚本通过 ssh 在多台机器批量执行shell命令
创建 ssh_hosts 配置文件,定义需要批量执行的节点(必须能够通过 ssh 免密登录,且存在同名用户)
vim ssh_hosts
bigdata0
bigdata1
创建 dosshcmd.sh 脚本:
vim dosshcmd.sh
#! /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
fi
echo CMD: "$@"
doSshCmd "$@
赋予执行权限
chmod u+x dosshcmd.sh
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
2) 验证脚本执行:
编写一个通过 jps 找到 pid,然后通过 ps 查看进程信息的简单脚本:
vim find_java_resources.sh
#! /bin/sh
pids=`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
赋予执行权限
chmod u+x find_java_resources.sh
分发:
[root@bigdata0 scripts]# scp find_java_resources.sh bigdata1:`pwd`
find_java_resources.sh 100% 265 0.3KB/s 00:00
[root@bigdata0 scripts]#
查看集群每个节点 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
也可以用 watch 监控
watch "./dosshcmd.sh /home/z/scripts/find_java_resources.sh yarn"