27

When we are using windows ping , it will show the failed pings. Does Ubuntu have similar function?

The failed ping is quite useful when debugging the network. How you guys solve this? Well, I only want simple solution, I don't want to get a long script.

  • 2
    Can you provide a sample output or a screenshot to supplement the question? – green Apr 6 '13 at 8:02
  • 1
    Are you looking or more detailed information than 5 packets transmitted, 0 received, 100% packet loss, time 4032ms (information like that is printed when ping terminates, whether by itself or by Ctrl+C)? Are you looking for separate data about each individual ping? – Eliah Kagan Apr 6 '13 at 17:34
  • 1
    Linux is awesome and all of us here love it for many reasons but... hey sometimes Windows got it right and Linux got it wrong. Yes, even in basic CLI tools. Yes, even in basic networking CLI tools! If there is no easy way to get a message on screen when things go wrong then we must acknowledge it as "a feature we're missing". We certainly don't want to pretend it's something so complex that we can't figure out what is it exactly that the OP is asking (especially when it's a feature turned on by default in a few million boxes around us). – ndemou Jan 17 '15 at 18:41
  • I could have sworn that this feature was present in earlier linux ping. It's present in MacOS as well (which is built on top of unix). It's beyond me why it shouldn't be there. I have a line that works intermittent and to find out the lenght of the blackouts I need to sift through the output looking for jump, instead of having the lines clearly distinct. – Silvio Levy Feb 9 '15 at 19:59
26

The right answer is: there is no such thing as "failed lost ping". (Failure replies like "Destination unreachable" are always printed, it is different from no reply at all.)

Ping utility prints every received reply, even if it eatlier decided that this specific ping was lost. It is entirely possible to receive replies out of order.

Even on my Android phone, stock ping utility supports these 2 options:
-D prints a timestamp before every message
-O prints a message when reply is not received in time, and it is more or less what was asked.
However, these options do not seem to be supported everywhere (e.g. Debian Wheezy lacks them as far as I know, while Jessie has them. busybox ping does not support them).

Here is an example output I managed to get (unimportant ping replies skipped):

u0_a93@NX505J:/ $ ping -D -O 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[1440545014.805478] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=244 time=116 ms
~~~~~~~~~~
[1440545142.995443] 64 bytes from 8.8.8.8: icmp_seq=129 ttl=244 time=110 ms
[1440545144.885601] no answer yet for icmp_seq=130
[1440545145.455485] 64 bytes from 8.8.8.8: icmp_seq=131 ttl=244 time=568 ms
[1440545145.455780] 64 bytes from 8.8.8.8: icmp_seq=130 ttl=244 time=1569 ms
[1440545146.005850] 64 bytes from 8.8.8.8: icmp_seq=132 ttl=244 time=119 ms
~~~~~~~~~~
[1440545254.055962] 64 bytes from 8.8.8.8: icmp_seq=240 ttl=244 time=115 ms
^C
--- 8.8.8.8 ping statistics ---
240 packets transmitted, 240 received, 0% packet loss, time 239250ms
rtt min/avg/max/mdev = 109.062/138.757/1569.620/101.608 ms, pipe 2

Note how #130 is first reported missing, then received after #131, and finally packet loss is reported to be zero.


Extra note about Windows:

On Windows, ping seems to wait for reply longer and then declare it missing and ignore it if it comes later.

By default, interval is 1 second and timeout is 4 seconds, so:
On low RTT, pings will be sent with 1-second intervals.
On RTT>4, pings will be sent with 4-second intervals (or 5, not sure) and will all be reported as failed, same as if server did not respond.

|improve this answer|||||
  • 1
    +1 for -O option, is present and works well in Ubuntu trusty (& Linux Mint 17.2) from the iputils-ping package version 3:20121221-4ubuntu1.1 – Xen2050 Aug 28 '15 at 21:38
15

Going partially off the answer by EvgEnZh, but with my own version:

ping -O -q 8.8.8.8

That makes it print a message when a reply takes too long or never comes back (-O) and suppresses messages for when they do come back (-q). The result is that you only get output when packets go missing. This can make finding intermittent problems much easier by making it so you don't have to sift through a pile of "it worked" messages for the few places it broke.

|improve this answer|||||
  • Note that -O triggering only means that latency is higher than expected. That often indicates a real problem, but not always. That log I posted in my answer was acquired on a weak GPRS connection, and even though in over 2 minutes I only caught single out-of-order reply, there were many replies that came in "late". The crappy connection got overwhelmed a few times, reported several pings missing in a row, and then they all came in after a few seconds. The connection was still reliable (maybe GPRS handled retransmission internally, I don't know), just an extreme pain to use even for SSH access. – EvgEnZh Aug 30 '18 at 13:01
3

Maybe ping -f is suitable for you. From ping manual:

-f

Flood ping. For every ECHO_REQUEST sent a period ''.'' is printed, while for ever ECHO_REPLY received a backspace is printed. This provides a rapid display of how many packets are being dropped. If interval is not given, it sets interval to zero and outputs packets as fast as they come back or one hundred times per second, whichever is more. Only the super-user may use this option with zero interval.

For 1 echo_request every second it would look like ping -i 1 -f 8.8.8.8

|improve this answer|||||
  • Not sure it's a new feature or not, I could see the failed pings. – 王子1986 Apr 11 '13 at 14:15
  • Which option did you use to get the failed pings reported? What message are you getting for a failed ping? – Daniel Yuste Aroca Apr 11 '13 at 18:46
  • While I just used ping the message is like this $ping 172.18.1.12 PING 172.18.1.12 (172.18.1.12) 56(84) bytes of data. From 172.18.1.224 icmp_seq=1 Destination Host Unreachable From 172.18.1.224 icmp_seq=2 Destination Host Unreachable From 172.18.1.224 icmp_seq=3 Destination Host Unreachable – 王子1986 Apr 12 '13 at 6:50
  • 2
    "Destination Host Unreachable" is not the same as a ping timeout – ndemou Jan 17 '15 at 17:31
  • ping -f is not the answer, because it doesn't leave a record. What is needed is one type of line for a successful ping and and a different for failure, so one can immediately tell (in a situation where service is intermittent) how often and how long the blackouts are. – Silvio Levy Feb 9 '15 at 20:14
0

Even with the -v option, ping don't do that. See this question. But if this is really important (or fun) for you, you can download the source, modify the code to include a suitable printf call. A good place to to that would be at the end of method 'send_probe' (line 619 on 12.10)...

First you get the source

apt-get source iputils
cd iputils*

Make edits

gedit ping.c

Build, and install generated package...

apt-get install libsysfs-dev
dpkg-buildpackage
|improve this answer|||||
  • I would like to do this (and upvote this answer 10 times) but there must be something missing. I'm working under sudo -s. After editing ping.c, if I try "make" I get "fatal error: sys/capability.h: No such file". If I follow the next two lines in the answer (apt-get install and dpkg-...) I get no errors but I have no idea where the executable is placed. The old executable (/bin/ping) is still there -- I know it's old from the timestamp and because it doesn't behave any differently. – Silvio Levy Feb 9 '15 at 20:10
-2

Thanks for all the answers. It seems like the latest ubuntu ping can show the ping failed.

Thanks again.

|improve this answer|||||
  • 1
    No it doesn't (until 2015-Jan at least) "Destination Host Unreachable" is not the same as a ping timeout – ndemou Jan 17 '15 at 17:30
  • Why is this the accepted answer?ping -O -q 8.8.8.8 is the way to go. – theV0ID Jul 8 '19 at 11:54
  • @theV0ID because they self-answered back in 2013. Nothing we can do about it. – Thomas Ward Jan 28 at 17:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.