25

What is the -w (deadline) flag in ping for? I cannot find a description of it in the ping man page; only for -W, which takes seconds as a parameter. What is the difference between them, and how can I set a ping timeout (if host is not responding) to 200ms?

1
  • 1
    On what operating system, and if Linux, distribution, and which package is the ping executable in? There are several different versions of ping around, with different options. Feb 4, 2013 at 22:09

4 Answers 4

31

From man ping:

-w deadline
Specify a timeout, in seconds, before ping exits regardless of how many packets have been sent or received. In this case ping does not stop after count packet are sent, it waits either for deadline expire or until count probes are answered or for some error notification from network.

-W timeout
Time to wait for a response, in seconds. The option affects only timeout in absense of any responses, otherwise ping waits for two RTTs.

That is, -w sets the timeout for the entire program session. If you set -w 30, ping (the program) will exit after 30 seconds.

-W on the other hand sets the timeout for a single ping. If you set -W 1, that particular ping attempt will time out.

As for how to set an individual ping timeout of 200ms, I don't believe this can be done with iputils' version of ping. You might want to try directly programming with an ICMP library.

3
  • 2
    oh, my man page (archlinux) is missing the -w flag, but has the description. I just believed it to belong to -W. So no way to define a timeout smaller that 1s?
    – Rafael T
    Feb 4, 2013 at 13:22
  • @RafaelT Not as far as I'm aware.
    – Chris Down
    Feb 4, 2013 at 13:26
  • To make it clear: if you use -w, -c will be ignored. If you just need a single ping, you can use -c 1 -W 4 or whatever is an appropriate timeout for you.
    – John
    Feb 5, 2019 at 14:49
5

All good answers, but watch out for this quirk if (like me) you're porting code between platforms. The text below is from the respective 'man ping' documentation.

On Mac OS X:

-W waittime

    Time in milliseconds to wait for a reply for each packet sent.

On Raspberry Pi:

-W timeout

    Time to wait for a response, in seconds.

I coded on the Mac to wait 1 second (1,000 ms) as -W 1000, but when this code moved to the Pi, it waited for up to 1,000 secs!

2

My manpage (Fedora 18, iputils-20121221-1.fc18) says

   -w deadline
          Specify  a  timeout, in seconds, before ping exits regardless of
          how many packets have been sent or received. In this  case  ping
          does  not  stop after count packet are sent, it waits either for
          deadline expire or until count probes are answered or  for  some
          error notification from network.

   -W timeout
          Time to wait for a response, in seconds. The option affects only
          timeout in absence of any responses, otherwise  ping  waits  for
          two RTTs.
1
  • What does it means anyways? what does it mean "otherwise ping waits for two RTTs". I tried pinging a host which firewall simply doesn't accept ICMP, and it doesn't timeout: it waits forever. Is it waiting for 2 whatever RTTs are?
    – jgomo3
    Oct 6, 2021 at 17:43
0

There is also the -em option that shoves each packet in a certain period of time for example:

ping -i 5 <target>
1
  • Welcome to the site, and thank you for your contribution. However, where exactly are you using the -em option you mention in the answer?
    – AdminBee
    May 10, 2022 at 6:40

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.