Проверяйте статистику пинга без остановки


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.
Андреас Визе

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.
Старсон Хохшильд

1
Использование этого метода означает, что нет необходимости использовать & jobs ; fgчасть команды в ответе, поскольку его единственная цель - сообщить PID... Извините за дополнительный комментарий - я больше не могу редактировать свой исходный комментарий из-за 5-минутного порога.
Старсон Хохшильд

12

Есть еще один простой способ получить статистику пинга во время ее выполнения: просто нажмите 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
По иронии судьбы я на самом деле внес некоторый код для этой конкретной функции, получив свой ответ из выбранного лучшего ответа.
марта

Я удивлен, увидев, что для меня в Ubuntu Bionic запуск терминала, по словам xev, Ctrl + \ такой же, как комбинация клавиш, упомянутая в других ответах здесь: Ctrl + |и Ctrl + 4. Все приводят к XLookupString 0x1c, который связан с SIGQUIT, как показано stty -a. См. Также сочетания клавиш - Связывание клавиш Shell SIGKILL
Суперпользователь

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 %).

Это, конечно, не обеспечивает истинную статистику работы - только в течение этих 10 пингов.


1

Вы можете использовать утилиту для часов

watch -n 3 ping -c 1 10.170.0.21

Это будет запускать pingкоманду каждые 3 секунды и непрерывно показывать вам результат.


2
Это на самом деле не отвечает на вопрос. Если вы внимательно прочитали, то целью было получить статистику. Запуск нового pingпотеряет историю и, следовательно, не даст желаемой информации.
марта

1

На Mac это Ctrl+ T.

Ctrl+ \делает то же самое, что и Ctrl+ C, так как останавливает пинг после отображения статистики.


Слава @ brian-clide, только что заметил, что он ответил передо мной в комментарии.
Стефан Рогин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.