2009-12-15 7 views
1

У меня есть доступ к нескольким кланам Linux в школе. иногда они заняты, а иногда и нет. Я обычно вхожу в систему вручную, используя команду «top», чтобы увидеть, занят ли сервер (чтобы узнать, используются ли оба ядра). оттуда я запускаю свою программу для использования некоторых серверов, которые могут запускать мои вычисления.Автоматизация: поиск неиспользуемых серверов из списка серверов

Что бы я хотел сделать, это автоматизировать этот процесс со сценарием. предположим, что у меня есть список серверов, например server1 ... server N. Я хотел бы последовательно входить в каждый из этих серверов, запускать некоторую команду (сверху?) и выводить список неиспользуемых серверов (или выводить верхние два процесса, показывающие cpu%, для каждого сервера).

любые предложения были бы весьма признательны.

+0

Многим из тех, кому здесь повезло, получить одну машину, на которой можно играть. :) Я думаю, что bash-хакеры на superuser.com смогут вам помочь. –

ответ

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 -1 на выходе от w, чтобы увидеть только линию нагрузки.


Update, улучшилось:

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

Update, улучшена еще немного:

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

... или вы можете использовать 'uptime' вместо' w | head -1';) – caf

+0

Я никогда не думал искать эту информацию в режиме безотказной работы ... спасибо! –