Более быстрый путь, чем ping для проверки, если компьютер онлайн?

Драйверы с открытым исходным кодом становятся довольно хорошими в эти дни. У меня не было проблемы с аппаратными средствами AMD или Intel.

Intel
Я слышу, что старые довольно плохи, но мой G4500HD делает все, в чем я нуждаюсь хорошо. Видеоускорение могло быть лучше все же. Нет собственного драйвера для Intel также, Вашим единственным выбором является открытый исходный код. Составленный 3D рабочий стол в KDE работает отлично на моем ноутбуке, который имеет процессор Intel.

AMD/ATi
Прямо сейчас более старые карты лучше поддерживаются, чем новые. Если бы Вы могли бы так или иначе получить x1800 или что-то от того же поколения, которое, вероятно, было бы лучшим. r300g драйвер получает больше технической разработки, чем r600g. Но это вовсе не значит r600g плохо, на самом деле это является большим! Это находится просто несколько позади драйвера для более старых аппаратных средств. AMD имеет собственный драйвер для новых аппаратных средств, но по моему опыту Вы хотите избежать его; это довольно плохо. Аппаратные средства, покрытые r300g не поддерживается тем драйвером, таким образом, открытый драйвер является Вашей единственной опцией там. И как процессор Intel я имею, мой Radeon 4850 выполняет составленный рабочий стол в KDE хорошо.

В данный момент я не рекомендовал бы серию HD6000. 6900 не имеют никакой поддержки вообще в открытом драйвере, и у других есть основная поддержка. Пойдите для HD5000 или HD4000.

Nvidia
У них есть действительно хороший собственный драйвер, но открытый драйвер борется вперед. Это - улучшение все время, но Nvidia не делает ничего для помощи разработчикам. По крайней мере, AMD выручает немного для их аппаратных средств.

Преимущество для наличия открытого драйвера состоит в том, что оно будет работать из поля в любом дистрибутиве. При установке Fedora все будет работать включая двойной экран и 3D. Собственные являются болезненными для установки. Ни один из них правильно не настроил мои двойные экраны. Было легче установить с Nvidia, которая не говорит многое, потому что блоб AMD был просто ужасен в этом. Кроме того, каждый раз, когда Вы обновляете ядро, необходимо переустановить драйвер. Большинство дистрибутивов заботится об этом, если Вы устанавливаете в - repo версия, но если Вы не делаете это является раздражающим, чтобы загрузиться однажды утром и понять обновление ядра, и теперь X.org не работает.

Если Вы не планирование того, чтобы играть в 3D игры, или Intel или драйверы AMD являются лучшими. Драйвер AMD более современен, чем Intel один, он использует архитектуру Gallium3D в Мезаструктуре (это что g обозначает в r600g), но они оба сделали задание.

20
17.02.2011, 20:01
7 ответов

Отправка единственного пакета и ожидание ответа будут одним из самых быстрых путей, и ping является прекрасным способом сделать это. На самом деле, в зависимости от Вашего варианта использования, я утверждал бы, что это слишком быстро, так как это действительно не говорит Вам, если система на самом деле делает что-либо полезное, просто что сетевая подсистема ядра жива и настроена.

Но принятие этого достаточно хорошо, можно сделать некоторые улучшения. Во-первых, Вы могли использовать -W1 уменьшить тайм-аут ping к одной секунде. Во-вторых, Вы могли заставить свой сценарий проверить с помощью ping-запросов различные хосты асинхронно (в фоновом потоке) и проверить результаты по мере необходимости вместо ожидания.

Поочередно, можно заново продумать подход и иметь регистрацию удаленных систем так или иначе, когда они произошли, и если система не зарегистрировалась, можно предположить, что это снижается.

20
27.01.2020, 19:44
  • 1
    Хороший запрос к-w дополнению, должен был сделать его два, хотя причина набор компьютеров не ответила достаточно быстрая. Мог бы изучить добавление своего рода периодической регистрации также или квитировать, но на данный момент хотеть иметь процесс, относительно внешний к компьютерам, которые я включаю. –  Jon Phenow 17.02.2011, 18:00
  • 2
    я также использую-s для отправки пакета меньшего размера. –  Shawn J. Goff 17.02.2011, 19:18
  • 3
    , который я буду потрясен при отправке пакета меньшего размера, имеет значение. –  mattdm 17.02.2011, 19:24
  • 4
    Разве они Не в значительной степени уже отправлены в почти минимальном размере пакетов? –  Jon Phenow 17.02.2011, 21:16
  • 5
    Они являются довольно маленькими; существует значение по умолчанию 56 байтов данных, которые Вы могли уменьшить. Но в любом случае, это меньше, чем MTU Ethernet и не больше, чем ничто, таким образом, это сводится "к одному пакету" так или иначе. –  mattdm 17.02.2011, 21:29

Это - то, для чего был разработан fping. http://fping.sourceforge.net/

Необходимо проанализировать вывод впоследствии вместо того, чтобы полагаться на код возврата, но это намного быстрее, чем выполнение нормального ping.

7
27.01.2020, 19:44
  • 1
    я думаю, что это довольно забавно описание, говорит "В отличие от ping, fping предназначен, чтобы использоваться в сценариях, и его вывод легко проанализировать". и все же это не предоставляет код возврата –  Adam Plocher 28.04.2018, 00:07
  • 2
    , Чем хорошие значения были бы для кода возврата? –  Thorbjørn Ravn Andersen 28.04.2018, 00:33

Это только работало бы на один или два компьютера, но если Вы подключаете их непосредственно к компьютеру, ответственному за проверку их состояния, можно использовать ethtool видеть, активен ли канал или нет.

3
27.01.2020, 19:44
  • 1
    , я не использовал ethtool для этого, хотели бы Вы давать пример? (или возможно ссылка)? –  Johan 18.02.2011, 09:17
  • 2
    ethtool {network_interface} | grep "Link detected" | cut -f 3 -d ' ' возвратится yes если машина подключена, и no если это не. –  LawrenceC 21.02.2011, 19:04

Что Вы могли сделать это, проверяют с помощью ping-запросов широковещательный адрес, который должен заставить все компьютеры проверять с помощью ping-запросов назад. Затем Вы могли перепроверить этот список против того, что Вы имеете в SQLite, чтобы гарантировать, что все компьютеры возросли.

Другой затем, что ping является, вероятно, самым быстрым способом гарантировать компьютер, бодрствует в сети. Как упомянуто другим ответом это не обеспечивает действительно полезных данных. Если у Вас есть способность установить сценарии, можно добавить cronjob, чтобы проверить с помощью ping-запросов центральный сервер, выполнить задачу или просто повторить список процессов к центральному серверу, который зарегистрирует запрос. Затем просто проверка, которая скажет Вам, если у Вас будут какие-либо проблемы без потребности вручную проверить каждый раз.

2
27.01.2020, 19:44
  • 1
    я предполагаю, что Вы имеете в виду, проверяют с помощью ping-запросов широковещательный адрес, не шлюз. В современных системах, которые, вероятно, не будут работать. Посмотрите unix.stackexchange.com/questions/7458/cant-ping-broadcast –  mattdm 17.02.2011, 17:25
  • 2
    @mattdm: Многоадресная передача затем? Я не знал, что большинство людей выключило его. У меня не было проблем, с которыми встречаются, с ним прежде. –  Josh K 17.02.2011, 17:31
  • 3
    Ха-ха да благодарит mattdm, подобная проблема, Вы видите, что я столкнулся. не, что люди выключают их, но они обычно идут с широковещательной передачей прочь в последнее время, по-видимому. –  Jon Phenow 17.02.2011, 17:34
  • 4
    Мог использовать fping (fping.sourceforge.net) для проверки с помощью ping-запросов списка хостов параллельно. Затем Вы не должны полагаться на способность проверить с помощью ping-запросов широковещательный адрес. –  mazianni 17.02.2011, 20:31

Ганглии используют многоадресный трафик для контроля многих хостов в кластере, возможно, Вы могли использовать что-то подобное? Это предполагает, что Ваши сетевые аппаратные средства позволяют многоадресный трафик между всеми хостами и Вашей системой контроля.

2
27.01.2020, 19:44
  • 1
    Похож на классный инструмент, но в целях этого небольшого сценария мог бы добавить некоторый ненужный блок к проекту, сохранив' его как довольно маленький сценарий на данный момент. Будет определенно бдительно следить за ним, хотя, похож на инструмент, я мог бы использовать скоро неменьше. –  Jon Phenow 17.02.2011, 18:01

Я имел ту же проблему и придумал следующее (быстрый и грязный) сценарий. Это по существу выпускает все ping как отдельные задания параллельно и просканирует всю/24 подсеть через 3 секунды; обратите внимание, что по некоторым причинам я не потрудился узнавать, что я не мог использовать код результата ping здесь, но grep-v сделал задание:

#!/bin/bash
case $# in
1)
  case $1 in
  [1-9]*)
        echo
        echo Systems active in subnet: $1
        for (( K = 1 ; K < 255 ; K=$K+1 )); do
        # grep -v delivers 0 on no matches
                echo -ne "testing:" $1$K "...    \r"
                (if ping -c 1 -w 1 -n $1$K 2>&1 | grep -q '64 bytes' ; then
                echo $1$K alive "                "
                fi) &
        done
        sleep 3
        echo "                               "
        exit 0
        ;;
  esac;;
esac
0
27.01.2020, 19:44

В C,

/* count = 1, wait interval = 1 second, no name lookup, */
/* 10 data bytes, 1 second timeout, 200 millisecond wait time */

sprintf(command,"ping -c1 -i1 -n -s10 -t1 -W200 %u" 
   , connection[port].IPAddress);
err = system(command);
/* err == 0 means OK */
0
27.01.2020, 19:44

Теги

Похожие вопросы