А type ping что говорит?
wl500g deluxe, прошивка 1.9.2.7-7d-pre4, подключение к провайдеру DHCP/PPTP, с роутером общаюсь через SSH (dropbear - putty).
Недавно обратил внимание: при попытке пинговать любой адрес проходит первый пинг
после чего все висит. После нажатия CTRL-C выдается статистика:Code:[admin@ROUTER root]$ ping localhost PING localhost.localdomain (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=1.2 ms
Играл с опциями пинга, но ничего не помогает. В принципе, напрягает не сильно, но все же интересно, в чем причина. Может быть, повлияла установка какого-либо пакета? Такое впечатление, что сразу после заливки прошивки все было OK. Сейчас установлены: adduser, ipkg, less, mc, nano, ncurses, openssh, openssl, zlib.Code:--- localhost.localdomain ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 1.2/1.2/1.2 ms [admin@ROUTER root]$
А type ping что говорит?
Originally Posted by OlegCode:[admin@ROUTER root]$ type ping ping is /bin/ping
Столкнулся с зависаниями ping когда поставил мониторинг соединения провайдера. Когда связь есть скрипт:
работает нормально. Недавно упало PPPoE и скрипт вис на пингах. Убиванием пинг процессов удалось дать ему досчитать до диагностики "ppp0 is DEAD".Code:while true; do if ping -c 1 $host1 > /dev/null 2>&1 || ping -c 1 $host2 > /dev/null 2>&1 ; then let live_c+=1 [ $live_c -ge $flip_trsh ] && dead_c=0 else let dead_c+=1 live_c=0 fi if [ ! -f $online_flag ] && [ $live_c -ge $live_trsh ]; then touch $online_flag $LOG "### $1 is ALIVE! ### count: $live_c ###" fi if [ -f $online_flag ] && [ $dead_c -ge $dead_trsh ]; then rm $online_flag $LOG "### $1 is DEAD! ### count: $dead_c ###" kill -1 pppd fi sleep 30 done
Стал проверять работу ping.
Запускаю каждые 5 минут скрипт:
На пингуемом компе вижу только один запрос и ответ:Code:#!/bin/sh ping -c 3 192.168.1.2 > /dev/null 2>&1
А в роутере висят незавершившиеся пинги:Code:14:50:08.196001 IP ASUSRouter > KABINET: icmp 84: echo request seq 0 (DF) 14:50:08.196053 IP KABINET > ASUSRouter: icmp 84: echo reply seq 0 (DF) 14:55:08.374252 IP ASUSRouter > KABINET: icmp 84: echo request seq 0 (DF) 14:55:08.374304 IP KABINET > ASUSRouter: icmp 84: echo reply seq 0 (DF) 15:00:08.692029 IP ASUSRouter > KABINET: icmp 84: echo request seq 0 (DF) 15:00:08.692076 IP KABINET > ASUSRouter: icmp 84: echo reply seq 0 (DF)
Ping из BusyBox v1.1.3 (2006.06.29-17:07+0000) прошивка 1.9.2.7-7f-pre7.Code:29663 root 320 S /opt/sbin/cron 29664 root 468 S /bin/sh -c run-parts /opt/etc/cron.5mins 29665 root 504 S /bin/sh /opt/bin/run-parts /opt/etc/cron.5mins 29668 root 500 S /bin/sh /opt/bin/run-parts /opt/etc/cron.5mins 29669 root 400 S ping -c 3 192.168.1.2 29730 root 320 S /opt/sbin/cron 29731 root 468 S /bin/sh -c run-parts /opt/etc/cron.5mins 29732 root 504 S /bin/sh /opt/bin/run-parts /opt/etc/cron.5mins 29735 root 500 S /bin/sh /opt/bin/run-parts /opt/etc/cron.5mins 29736 root 400 S ping -c 3 192.168.1.2 29798 root 320 S /opt/sbin/cron 29800 root 468 S /bin/sh -c run-parts /opt/etc/cron.5mins 29801 root 504 S /bin/sh /opt/bin/run-parts /opt/etc/cron.5mins 29805 root 516 S /bin/sh /opt/bin/run-parts /opt/etc/cron.5mins 29806 root 400 S ping -c 3 192.168.1.2
Пинг запущеный из ssh прекрасно работает:
Подскажите может что-то я не так делаю или это ошибка?Code:[root@ASUSRouter root]$ ping -c 3 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes 84 bytes from 192.168.1.2: icmp_seq=0 ttl=128 time=0.6 ms 84 bytes from 192.168.1.2: icmp_seq=1 ttl=128 time=0.6 ms 84 bytes from 192.168.1.2: icmp_seq=2 ttl=128 time=0.6 ms --- 192.168.1.2 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.6/0.6/0.6 ms
Last edited by TVadim; 25-10-2006 at 10:51.
Посмотрел исходники: есть версия что не приходит сигнал SIGALRM если ping вызван крона или фонового скрипта (не понимаю! ).
Фрагмент ping.c:
Посылка сигнала ALRM извне не продвигает пинг.Code:signal(SIGALRM, sendping); if (pingcount == 0 || ntransmitted < pingcount) { /* schedule next in 1s */ alarm(PINGINTERVAL); } else { /* done, wait for the last ping to come back */ /* todo, don't necessarily need to wait so long... */ signal(SIGALRM, pingstats); alarm(MAXWAIT); }
Last edited by TVadim; 26-10-2006 at 08:24.
Блин, у меня та же проблема...
...прошивка pre8... установлено много разных пакетов дополнительно...Code:[root@gw root]$ ping -s 1 ya.ru PING ya.ru (213.180.204.8): 1 data bytes 29 bytes from 213.180.204.8: icmp_seq=0 ttl=58 time=30.3 ms --- ya.ru ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 30.3/30.3/30.3 ms
Замечательно
Восхитительно
Отключите OpenSSH и запустите dropbear
Оттуда ничего не подвисает.
Что скажете ?
OpenSSH не поставлен, писал выше из под dropbear не виснет.Originally Posted by Lesnix
Виснет из под крона и из под открепленных sh скриптов.
Last edited by TVadim; 26-10-2006 at 11:44.
Я глянул патчи, которые были в последнее время были в бизибоксе, ничего особо похожего на исправление не нашёл.
Как повторить _без_ крона? Попробовал с OpenSSH - сходу не получилось.
Запустить открепленный от терминала циклический скрипт с пингом с повторами. Похоже почему-то не создается аларм. Если счетчик равен 1 то то пинг завершается по ответу, не используя аларм.
Давайте пример, пошаговый. Чтобы я сделал именно так, как Вы, после входа через dropbear или openssh.
Попробовал через dropbear и телнет - не виснет.
Из крона виснет. Зависал и, как описано в моем первом посте, скрипт пингования провайдера, запущенный из post-mount. Но в нем счетчик пингов = 1 и завиние было когда не было ответа от проверяемых адресов.
Для крона:
В cron-5min создается скрипт:
И процессах будут незавершенные пинги.Code:#!/bin/sh ping -c 3 192.168.1.2 > /dev/null 2>&1
У меня это стабильно.
cron из пакетов? встроенным пробовали пользоваться?
Из пакетов, про встроенный не знал.
Проблема то выросла из пингования провайдера, там вызов из post-mount.
А крон это тестирование.
Может это связано с памятью, например размером стека выделяемым новому процессу или еще каким-нибудь структурам данных?