2009-12-15 67 views
1

我可以在學校訪問幾個Linux羣集。有時他們很忙,有時他們不是。我通常手動登錄到每臺機器,使用「top」命令查看服務器是否繁忙(查看是否使用了兩個核心)。從那裏,我執行我的程序來使用一些免費運行我的計算的服務器。自動化:從服務器列表中找到未使用的服務器

我想要做的是用腳本自動化這個過程。假設我有一個服務器列表,比如server1 ... server N.我想按順序登錄這些服務器,運行一些命令(top?),並輸出一個未使用的服務器列表(或輸出前兩個進程,顯示每個服務器的cpu%)。

任何建議將不勝感激。

+0

這裏的許多人都幸運地獲得一臺機器上播放。 :)我認爲superuser.com上的bash-hacker將能夠更好地幫助你。 – 2009-12-15 23:20:13

回答

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 [email protected]$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 
0

你的問題讓我好奇。投票結束後,我找到了w命令。

如果你做這樣的事情

echo Host: host 
ssh [email protected] w 
在腳本

,與一對線的每一個你想訪問的主機,你可以得到你想要的東西大概。您可以用head -1w的輸出進行一點處理以僅查看負載線。


更新,改進:

for h in host1 host2 host3; do 
echo host: $h `ssh [email protected]$h w | head -1` 
done 

更新,提高了一些:

for h in host1 host2 host3; do 
echo host: $h `ssh [email protected]$h uptime` 
done 
+1

...或者你可以使用'uptime'而不是'w |頭-1';) – caf 2009-12-16 00:56:10

+0

我從來沒有想過在正常運行時間裏查找這些信息......謝謝! – 2009-12-16 13:19:56