автоматизировать: поиск неиспользуемых серверов из списка серверов - PullRequest
1 голос
/ 16 декабря 2009

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

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

любые предложения будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2009

Спасибо за предложения. Вот мой сценарий для всех, кто интересуется:

#! /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
0 голосов
/ 16 декабря 2009

Ваш вопрос вызвал у меня любопытство. После голосования, чтобы закрыть его, я нашел команду 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
...