Kiểm tra thống kê ping mà không dừng lại


28

Có cách nào để nói pingđể hiển thị số liệu thống kê chấm dứt thông thường của nó mà không dừng thực thi không?

Chẳng hạn, tôi muốn xem nhanh:

--- 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

mà không phải dừng chương trình, do đó mất dữ liệu tích lũy.


2
Thật vậy, như Andreas gợi ý ở trên, bạn có thể sử dụng CTRL + \ để lấy số liệu thống kê mà không cần thoát ping.
George

Câu trả lời:


34

Từ pingtrang chủ (nhấn mạnh của tôi):

Khi số lượng gói tin được chỉ định đã được gửi (và nhận) hoặc nếu chương trình được kết thúc bằng SIGINT, một bản tóm tắt ngắn gọn được hiển thị. Số liệu thống kê hiện tại ngắn hơn có thể thu được mà không chấm dứt quá trình với tín hiệu SIGQUIT.

Vì vậy, điều này sẽ hoạt động nếu bạn ổn với số liệu thống kê của bạn ít dài dòng hơn:

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

<... in another terminal ...>

kill -SIGQUIT $PID

Số liệu thống kê ngắn trông như thế này:

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

32
Một bổ sung nhỏ: Bạn có thể phát ra SIGQUITtừ thiết bị đầu cuối bằng cách nhấn "Ctrl- \", không cần phải mở thiết bị đầu cuối thứ hai và sử dụng kill.
Andreas Wiese

6
Ngoài ra, trên các biến thể BSD (bao gồm OSX), ping tóm tắt bằng tín hiệu SIGINFO, có thể được kích hoạt bằng Ctrl-T trong thiết bị đầu cuối.
Brian Cline

1
Tôi thường xuyên có nhiều thiết bị đầu cuối đi với pings liên tục . Tôi thường bắt đầu while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &trong thiết bị đầu cuối trước khi bắt đầu ping. Điều này cho phép tôi bắt đầu pings mới và / hoặc khởi động lại pings hiện có (để đặt lại số liệu thống kê) và không cần theo dõi PIDs cho kill.
Starson Hochschild

1
Sử dụng phương pháp này có nghĩa là không cần sử dụng & jobs ; fgmột phần của lệnh trong câu trả lời vì mục đích duy nhất của nó là báo cáo PID... Xin lỗi vì nhận xét bổ sung - không thể chỉnh sửa nhận xét ban đầu của tôi nữa do ngưỡng 5 phút.
Starson Hochschild

12

Có một cách dễ dàng hơn để lấy số liệu thống kê ping trong quá trình thực thi: Chỉ cần nhấn Ctrl + | (dấu gạch chéo dọc hoặc nó cũng được gọi là đường ống)

Cá nhân tôi sử dụng nó rất thường xuyên, hãy thử nó:

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
Trong một khúc quanh của số phận, tôi thực sự đã đóng góp một số mã cho tính năng cụ thể đó sau khi nhận được câu trả lời của tôi từ câu trả lời hay nhất được chọn.
2mac

Tôi ngạc nhiên khi thấy rằng, đối với tôi trong Ubuntu Bionic chạy Terminal, theo xev, Ctrl + \ cũng giống như tổ hợp phím được đề cập trong các câu trả lời khác ở đây: Ctrl + |Ctrl + 4. Tất cả đều mang lại XLookupString 0x1c, được ràng buộc với SIGQUIT như được hiển thị bởi stty -a. Xem thêm các phím tắt - Bàn phím Shell SIGKILL - Siêu người dùng
nealmcb

4

Hãy thử Ctrl+4

Nó hiển thị một dòng như thế này:

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

1

Nếu ping của bạn không hỗ trợ SIGQUIT hữu ích (AIX, Solaris), thì đây là một cách giải quyết - một vòng ping vô hạn trong đó mỗi ping chỉ bắn ra (ví dụ) 10 ping, để bạn có thể thấy kết quả trung gian.

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

Để ngăn chặn nó, Control-Cchỉ có thể giết pinglệnh; bạn có thể cần phải tạm dừng và sau đó giết công việc ( Control-z; kill %).

Điều này tất nhiên không cung cấp số liệu thống kê thực sự đang chạy - chỉ qua 10 lần ping đó.


1

Bạn có thể sử dụng tiện ích đồng hồ

watch -n 3 ping -c 1 10.170.0.21

Điều đó sẽ chạy pinglệnh cứ sau 3 giây và hiển thị cho bạn đầu ra liên tục.


2
Điều này không thực sự trả lời câu hỏi. Nếu bạn đọc kỹ, mục đích là để có số liệu thống kê. Chạy một cái mới pingsẽ làm mất lịch sử và do đó không cung cấp thông tin mong muốn.
2mac

1

Trên Mac, nó là Ctrl+ T.

Ctrl+ \thực hiện tương tự như Ctrl+ C, vì nó dừng ping sau khi hiển thị các số liệu thống kê.


Kudos nói với @ brian-clide, chỉ cần chú ý anh ấy đã trả lời trước tôi trong một bình luận.
Stefan Rogin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.