Перевіряйте статистику ping, не зупиняючись


28

Чи є спосіб сказати pingпоказати звичайну статистику припинення без зупинки виконання?

Наприклад, я хотів би швидко переглянути:

--- 8.8.8.8 ping statistics ---
2410 packets transmitted, 2274 received, +27 errors, 5% packet loss, time 2412839ms
rtt min/avg/max/mdev = 26.103/48.917/639.493/52.093 ms, pipe 3

не припиняючи програму, втрачаючи тим самим накопичені дані.


2
Дійсно, як пропонує Андреас вище, ви можете використовувати CTRL + \, щоб отримати статистику, не виходячи з ping.
Джордж

Відповіді:


34

З сторінки сторінки ping(моє наголос):

Коли надіслана (і отримана) вказана кількість пакетів або якщо програма завершена за допомогою SIGINT, відображається короткий підсумок. Коротша поточна статистика може бути отримана без припинення процесу з сигналом SIGQUIT.

Отже, це спрацює, якщо ви добре, якщо ваша статистика є трохи меншою,

# the second part is only for showing you the PID
ping 8.8.8.8 & jobs ; fg

<... in another terminal ...>

kill -SIGQUIT $PID

Коротка статистика виглядає приблизно так:

19/19 packets, 0% loss, min/avg/ewma/max = 0.068/0.073/0.074/0.088 ms

32
Невелике доповнення: Ви можете випромінювати SIGQUITз терміналу, натиснувши "Ctrl- \", не потрібно відкривати і використовувати другий термінал kill.
Andreas Wiese

6
Також у варіантах BSD (включаючи OSX) ping підсумовує сигнал SIGINFO, який може бути викликаний Ctrl-T у терміналі.
Брайан Клайн

1
У мене регулярно є кілька терміналів, які йдуть з безперервним pingпереходом. Зазвичай я починаю while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &в першому терміналі перед запуском ping. Це дозволяє мені запустити нові pings та / або перезапустити існуючі pings (для скидання статистики) і не потрібно відстежувати PIDs для kill.
Starson Hochschild

1
Використання цього методу означає, що немає необхідності використовувати & jobs ; fgчастину команди у відповіді, оскільки єдиною метою є звітування про PID... Вибачте за додатковий коментар - більше не можу редагувати свій оригінальний коментар через 5-хвилинний поріг.
Starson Hochschild

12

Є ще один простий спосіб отримати статистику ping під час її виконання: Просто натисніть Ctrl + | (вертикальна коса риса або її ще називають трубопровід)

Я особисто його дуже часто використовую, спробуйте:

64 bytes from 192.168.1.1: icmp_seq=6 ttl=64 time=0.893 ms
64 bytes from 192.168.1.1: icmp_seq=23 ttl=64 time=0.862 ms
64 bytes from 192.168.1.1: icmp_seq=24 ttl=64 time=3.18 ms
64 bytes from 192.168.1.1: icmp_seq=35 ttl=64 time=0.877 ms
64 bytes from 192.168.1.1: icmp_seq=36 ttl=64 time=0.866 ms
**36/36 packets, 0% loss, min/avg/ewma/max = 0.832/0.993/0.930/3.185 ms**
64 bytes from 192.168.1.1: icmp_seq=37 ttl=64 time=0.909 ms
64 bytes from 192.168.1.1: icmp_seq=38 ttl=64 time=2.03 ms
64 bytes from 192.168.1.1: icmp_seq=39 ttl=64 time=0.839 ms
64 bytes from 192.168.1.1: icmp_seq=40 ttl=64 time=0.880 ms

2
В розвороті долі я фактично вніс якийсь код до цієї особливості, отримавши свою відповідь з обраної найкращої відповіді.
2мак

Я здивований, побачивши, що для мене Ubuntu Bionic, що працює під терміналом, за словами xev, Ctrl + \ є таким самим, як комбінація клавіш, згадана в інших відповідях тут: Ctrl + |і Ctrl + 4. Усі отримують XLookupString 0x1c, який пов'язаний з SIGQUIT, як показано на stty -a. Дивіться також комбінації клавіш - Shell SIGKILL Keybinding - Super User
nealmcb

4

Спробуйте Ctrl+4

Він показує такий рядок:

312/312 packets, 0% loss, min/avg/ewma/max = 0.312/1.236/0.505/208.655 ms

1

Якщо ваш пінг не підтримує корисний SIGQUIT (AIX, Solaris), ось один спосіб вирішення - нескінченний цикл пінгу, де кожен пінг видаляє (наприклад) 10 пінг, так що ви можете побачити проміжні результати.

while :; do ping -c 10 $HOST; done

Щоб зупинити це, Control-Cможе вбити лише pingкоманда; вам може знадобитися призупинити, а потім вбити роботу ( Control-z; kill %).

Це, звичайно, не дає справжньої статистики роботи - трохи більше цих пінг.


1

Ви можете скористатися утилітою годинника

watch -n 3 ping -c 1 10.170.0.21

Це виконуватиме pingкоманду кожні 3 секунди та постійно показуватиме вихід.


2
Це фактично не відповідає на питання. Якщо ви уважно читаєте, мета полягала в тому, щоб мати статистику бігу. Запуск нового pingвтратить історію і, таким чином, не дасть бажаної інформації.
2мак

1

На Mac це Ctrl+ T.

Ctrl+ \робить те ж саме, що і Ctrl+ C, оскільки він зупиняє пінг після показу статистики.


Кудо до @ brian-clide, щойно помітив, що відповів перед мною в коментарі.
Стефан Рогін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.