自动化:从服务器列表中查找未使用的服务器

自动化:从服务器列表中查找未使用的服务器

我把这个发布到了 stack overflow 上,但是有位用户建议我在这里发布。抱歉交叉发布:

0 票反对 星级

我可以访问学校的几个 Linux 集群。有时它们很忙,有时不忙。我通常手动登录每台机器,使用“top”命令查看服务器是否繁忙(查看是否使用了两个核心)。从那里,我执行我的程序以使用一些可自由运行我的计算的服务器。

我想要做的是使用脚本自动执行这个过程。假设我有一个服务器列表,比如服务器 1...服务器 N。我想按顺序登录到每个服务器,运行一些命令(top?),并输出未使用的服务器列表(或输出前两个进程,显示每个服务器的 CPU 百分比)。

任何建议将不胜感激。

答案1

好吧,我会考虑使用 w 而不是 top (返回系统负载和谁登录了),但环顾四周。

答案2

感谢您的建议。以下是我的脚本,供感兴趣的人参考:

#! /usr/bin/env bash

out=avail.txt
rm -f "$HOME/$out"
minLoad=1
for h in $(cat "$HOME/listofservers.txt"); do
    ##w | head -1 | cut -d : -f 5 - | cut -d "," -f 2 -
    load=`ssh username@$h uptime | cut -d : -f 5 - | cut -d "," -f 2 -`
    comparison=`expr $load \< $minLoad`
    if [ comparison ]; then
        echo "$h" >> "$HOME/$out"
        ##echo "$load" >> "$HOME/$out"
    fi
done

PS 我们确实安装了 SGE。但是,我所做的还不能很好地与 SGE 配合使用。谢谢。

答案3

安装 Sun Grid Engine。或者 Hudson。

答案4

使用 ssh 密钥,您可以执行以下操作:

for i in server1 server2 server N
 do
       ssh user@$i "uptime" 
 done

Uptime 命令也会显示盒子的负载。您可以使用“top -b 1”、“w”...

如果你需要帮助配置 ssh 密钥,以便 ssh 不要求输入密码,请阅读此处如何设置 SSH 以便不需要输入密码?

相关内容