我可以访问学校里的几个linux集群。有时他们很忙,有时他们不忙。我通常手动登录每台机器,使用"top“命令查看服务器是否繁忙(查看是否使用了两个内核)。从那里,我执行我的程序,以使用一些免费运行我的计算的服务器。
我想做的是用一个脚本自动完成这个过程。假设我有一个服务器列表,比如server1 ...服务器N。我想按顺序登录到这些服务器中的每一个,运行一些命令( top ?),并输出未使用的服务器列表(或输出每个服务器的前两个进程,显示cpu % )。
任何建议都将不胜感激。
发布于 2009-12-17 03:15:59
谢谢你的建议。对于感兴趣的人,下面是我的脚本:
#! /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发布于 2009-12-16 07:29:36
你的问题让我很好奇。在投票决定关闭它之后,我找到了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`
donehttps://stackoverflow.com/questions/1911144
复制相似问题