Periksa statistik ping tanpa henti

28

Apakah ada cara untuk pingmenunjukkan statistik penghentian seperti biasa tanpa menghentikan eksekusi?

Misalnya, saya ingin melihat dengan cepat:

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

tanpa harus menghentikan program, sehingga kehilangan akumulasi data.

2mac
sumber
2
Memang, seperti yang disarankan Andreas di atas, Anda dapat menggunakan CTRL + \ untuk mendapatkan statistik tanpa berhenti ping.
George

Jawaban:

34

Dari halaman pingmanual (penekanan milikku):

Ketika jumlah paket yang ditentukan telah dikirim (dan diterima) atau jika program diakhiri dengan SIGINT, ringkasan singkat ditampilkan. Statistik arus yang lebih pendek dapat diperoleh tanpa penghentian proses dengan sinyal SIGQUIT.

Jadi ini akan bekerja jika Anda baik-baik saja dengan statistik Anda menjadi sedikit kurang bertele-tele:

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

<... in another terminal ...>

kill -SIGQUIT $PID

Statistik singkat terlihat seperti ini:

19/19 packets, 0% loss, min/avg/ewma/max = 0.068/0.073/0.074/0.088 ms
pmos
sumber
32
Satu tambahan sedikit: Anda dapat memancarkan SIGQUITdari terminal dengan menekan "Ctrl- \", tidak perlu memiliki terminal kedua terbuka dan gunakan kill.
Andreas Wiese
6
Juga, pada varian BSD (termasuk OSX), ping merangkum dengan sinyal SIGINFO, yang dapat dipicu dengan Ctrl-T di terminal.
Brian Cline
1
Saya secara teratur memiliki beberapa terminal berjalan terus menerus ping. Saya biasanya mulai while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &di terminal pertama sebelum memulai ping. Hal ini memungkinkan saya untuk memulai baru pingdan / atau restart ada pings (untuk me-reset statistik) dan tidak perlu untuk melacak PIDs untuk kill.
Starson Hochschild
1
Menggunakan metode ini berarti tidak perlu menggunakan & jobs ; fgbagian dari perintah dalam jawaban karena hanya bertujuan melaporkan PID... Maaf untuk komentar tambahan - tidak dapat mengedit komentar asli saya lagi karena ambang 5 menit.
Starson Hochschild
12

Ada satu lagi cara mudah untuk mendapatkan statistik ping saat menjalankan eksekusi: Cukup tekan Ctrl + | (garis miring vertikal atau disebut juga saluran pipa)

Saya sering menggunakannya secara pribadi, coba:

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
Alexander
sumber
2
Dalam putaran nasib, saya benar-benar berkontribusi beberapa kode terhadap fitur tertentu setelah mendapatkan jawaban saya dari jawaban terbaik yang dipilih.
2mac
Saya terkejut melihat bahwa, bagi saya di Ubuntu Bionic running Terminal, menurut xev, Ctrl + \ sama dengan kombinasi tombol yang disebutkan dalam jawaban lain di sini: Ctrl + |dan Ctrl + 4. Semua menghasilkan XLookupString dari 0x1c yang terikat ke SIGQUIT seperti yang ditunjukkan oleh stty -a. Lihat juga pintasan keyboard - Shell SIGKILL Keybinding - Pengguna Super
nealmcb
4

Coba Ctrl+4

Ini menunjukkan garis seperti ini:

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

Jika ping Anda tidak mendukung SIGQUIT yang berguna (AIX, Solaris), inilah satu solusi - loop ping tak terbatas di mana setiap ping hanya menyala (misalnya) 10 ping, sehingga Anda dapat melihat hasil antara.

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

Untuk menghentikannya, Control-Chanya dapat membunuh pingperintah; Anda mungkin perlu menangguhkan dan kemudian mematikan pekerjaan ( Control-z; kill %).

Ini tentu saja tidak memberikan statistik berjalan yang sebenarnya - hanya selama 10 ping.

Jeff Schaller
sumber
1

Anda dapat menggunakan utilitas arloji

watch -n 3 ping -c 1 10.170.0.21

Itu akan menjalankan pingperintah setiap 3 detik dan menampilkan output secara terus menerus.

Dima Kazavchinsky
sumber
2
Ini sebenarnya tidak menjawab pertanyaan. Jika Anda membaca dengan seksama, tujuannya adalah menjalankan statistik. Menjalankan yang baru pingakan kehilangan sejarah dan karenanya tidak memberikan informasi yang diinginkan.
2mac
1

Di Mac itu Ctrl+ T.

Ctrl+ \melakukan hal yang sama dengan Ctrl+ C, karena menghentikan ping setelah menunjukkan statistik.

Stefan Rogin
sumber
Kudos to @ brian-clide, hanya memperhatikan dia menjawab sebelum saya dalam komentar.
Stefan Rogin