我有一系列由我的学校提供的功能相同的服务器,它们运行各种操作系统和硬件配置。在大多数情况下,我可以交替使用其中的 5 个。不幸的是,其他学生倾向于聚集在一些机器上,找到没有陷入困境的机器很痛苦。
我想要的是 ssh 进入一台机器,运行命令:
w | wc -l
粗略估计该服务器上的负载,并使用该信息选择受影响最小的服务器。一种客户端负载均衡器。
有没有办法做到这一点或达到相同的结果?
我会把这个放在你的.bashrc
档案上
function choose_host(){
hosts="host1 ... hostn"
for host in $hosts
do
echo $(ssh $host 'w|wc -l') $host
done | sort | head -1 | awk '{print $2}'
}
function ssh_host(){
ssh $(choose_host)
}
choose_host
应该给你你正在寻找的那个。这绝对是矫枉过正,但我觉得好玩 :D
sort
将根据结果排序输出w|wc -l
,然后head -1
获取第一行并awk
打印主机名!你可以打电话ssh_host
,应该自动记录你。
您可以使用桌面上的pdsh命令,该命令在您指定的一组机器上运行指定的命令并返回结果。通过这种方式,您可以找出负载最少的那个。这将避免您ssh
对每台机器执行操作并运行w | wc -l
.
是的。参见例如:
ssh me@host "ls /etc | sort" | wc -l
里面的部分""
是远程完成的。之后的部分是本地的。