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

Linux 自动化:从服务器列表中查找未使用的服务器,linux,cluster-computing,Linux,Cluster Computing,我在学校可以使用一些linux集群。他们有时忙,有时不忙。我通常手动登录每台机器,使用“top”命令查看服务器是否繁忙(查看是否使用了两个核心)。从那里,我执行我的程序,使用一些可以自由运行我的计算的服务器 我想做的是用脚本自动化这个过程。假设我有一个服务器列表,比如server1。。。服务器N。我想按顺序登录这些服务器,运行一些命令(top?),并输出未使用的服务器列表(或者输出前两个进程,显示每个服务器的cpu%) 任何建议都将不胜感激。你的问题让我好奇。投票关闭它后,我找到了w命令 如果你

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

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


任何建议都将不胜感激。

你的问题让我好奇。投票关闭它后,我找到了
w
命令

如果你要做这样的事情

echo Host: host
ssh vinh@host w
在一个脚本中,每个您想访问的主机都有一对行,您可以大致得到您想要的内容。您可以在
w
的输出上使用
head-1
对其进行微调,以仅查看载重线


更新,改进:

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

谢谢你的建议。以下是我为感兴趣的人准备的脚本:

#! /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
#/usr/bin/env bash
out=avail.txt
rm-rf~/$out
最小负荷=1
对于h,单位为$(cat~/listofserver.txt);做
##w |头-1 |切口-d:-f 5-|切口-d”,“-f 2-
load=`ssh username@$h正常运行时间| cut-d:-f5-| cut-d“,“-f2-`
比较=`expr$load\<$minLoad`
如果[比较];然后
回显“$h”>>~/$out
##回显“$load”>>~/$out
fi
完成

这里的许多人都很幸运,有一台机器可以玩。:)我认为superuser.com上的bash黑客将能够更好地帮助您……或者您可以使用
正常运行时间
,而不是
w|head-1