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

时间:2009-12-15 23:12:37

标签: linux cluster-computing

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

我想做的是用脚本自动化这个过程。假设我有一个服务器列表,比如server1 ... server N.我想按顺序登录这些服务器,运行一些命令(顶部?),并输出一个未使用的服务器列表(或输出前两个进程,显示每个服务器的cpu%。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

你的问题让我很好奇。投票结束后,我找到了w命令。

如果您要做类似

的事情
echo Host: host
ssh vinh@host w

在一个脚本中,对于您想要访问的每个主机都有一对行,您可以大致得到您想要的内容。您可以在head -1的输出上使用w对其进行一些精细处理,以便仅查看负载线。


更新,改进了:

for h in host1 host2 host3; do
echo host: $h `ssh vinh@$h w | head -1`
done

更新,进一步改进:

for h in host1 host2 host3; do
echo host: $h `ssh vinh@$h uptime`
done

答案 1 :(得分:0)

感谢您的建议。这是我感兴趣的任何人的脚本:

#! /usr/bin/env bash

out=avail.txt
rm -rf ~/$out
minLoad=1
for h in $(cat ~/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" >> ~/$out
        ##echo "$load" >> ~/$out
    fi
done