ตรวจสอบสถิติ 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
แน่นอนตามที่ Andreas แนะนำไว้ข้างต้นคุณสามารถใช้ CTRL + \ เพื่อรับสถิติโดยไม่ต้องเลิก ping
จอร์จ

คำตอบ:


34

จากpingmanpage (เน้นที่เหมือง):

เมื่อจำนวนแพ็คเก็ตที่ระบุได้ถูกส่ง (และรับ) หรือถ้าโปรแกรมถูกยกเลิกด้วย 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 ในเทอร์มินัล
Brian Cline

1
ฉันเป็นประจำมีหลายขั้วจะมีอย่างต่อเนื่องpingที่เกิด ฉันมักจะเริ่มต้นในสถานีแรกก่อนที่จะเริ่มwhile true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done & pingนี้จะช่วยให้ผมที่จะเริ่มต้นใหม่pingและ / หรือเริ่มต้นที่มีอยู่pings (เพื่อรีเซ็ตสถิติ) และไม่จำเป็นต้องติดตามสำหรับPID 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
หลังจากโชคชะตาฉันบิดโค้ดบางอย่างไปยังคุณสมบัตินั้นหลังจากได้รับคำตอบจากคำตอบที่ดีที่สุดที่เลือกไว้
2mac

ผมแปลกใจที่จะเห็นว่าสำหรับฉันในอูบุนตูไบโอนิคทำงานเทอร์มิตาม XEV, Ctrl + \ เป็นเช่นเดียวกับการรวมกันที่สำคัญที่กล่าวถึงในคำตอบอื่น ๆ ที่นี่: และCtrl + | Ctrl + 4ทั้งหมดผลผลิต XLookupString ของ 0x1c ซึ่งผูกพันกับ SIGQUIT stty -aที่แสดงโดย ดูเพิ่มเติมที่แป้นพิมพ์ลัด - Shell SIGKILL Keybinding - ผู้ใช้ขั้นสูง
nealmcb

4

ลองCtrl+4

มันแสดงให้เห็นบรรทัดเช่นนี้:

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

1

ถ้า ping ของคุณไม่สนับสนุน SIGQUIT ที่มีประโยชน์ (AIX, Solaris) นี่คือวิธีแก้ปัญหาเดียว- ลูป ping วนไม่สิ้นสุดที่ ping แต่ละอันจะดับเท่านั้น (เช่น) 10 pings เพื่อให้คุณเห็นผลลัพธ์ระดับกลาง

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

เพื่อหยุดมันControl-Cอาจจะฆ่าpingคำสั่งเท่านั้น คุณอาจต้องระงับและฆ่างาน ( Control-z; kill %)

หลักสูตรนี้ไม่ได้ให้สถิติการทำงานจริง - เพียงแค่ในช่วง 10 pings


1

คุณสามารถใช้ยูทิลิตีการเฝ้าดู

watch -n 3 ping -c 1 10.170.0.21

ที่จะเรียกใช้pingคำสั่งทุก 3 วินาทีและแสดงผลลัพธ์อย่างต่อเนื่อง


2
สิ่งนี้ไม่ได้ตอบคำถาม หากคุณอ่านอย่างละเอียดวัตถุประสงค์ก็เพื่อให้มีสถิติการทำงานอยู่ การเรียกใช้ใหม่pingจะทำให้ประวัติเสียไปและจะไม่ให้ข้อมูลที่ต้องการ
2mac

1

บนMacก็+CtrlT

Ctrl+ \ทำเช่นเดียวกับCtrl+ Cในขณะที่มันหยุด ping หลังจากแสดงสถิติ


รุ่งโรจน์ถึง @ brian-clide เพิ่งสังเกตเห็นว่าเขาตอบก่อนฉันในความคิดเห็น
Stefan Rogin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.