我可以在学校访问一些Linux集群。有时他们很忙,有时他们不忙。我通常手动登录每台机器,使用“top”命令查看服务器是否正忙(查看是否使用了两个核心)。从那里,我执行我的程序,使用一些可以自由运行我的计算的服务器。
我想做的是用脚本自动化这个过程。假设我有一个服务器列表,比如server1 ... server N.我想按顺序登录这些服务器,运行一些命令(顶部?),并输出一个未使用的服务器列表(或输出前两个进程,显示每个服务器的cpu%。
任何建议都将不胜感激。
答案 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