代码之家  ›  专栏  ›  技术社区  ›  idan357

如何在linux中ping,直到主机已知X秒超时?

  •  0
  • idan357  · 技术社区  · 8 年前

    我试图等待一个设备启动在我的代码,我不想用睡眠等待他。 我的问题是,有时设备无法启动,在使用时我陷入了一个循环:

    until ping -c1 www.google.com &>/dev/null; do :; done
    while true; do ping -c1 www.google.com > /dev/null && break; done
    

    我怎样才能尝试ping到设备上X秒,并用一行打印“死”或“活”?

    2 回复  |  直到 8 年前
        1
  •  1
  •   iamauser    8 年前

    -W ping 等待超时 X 秒。

    对于Linux(iputils):

    $ ping -c1 -W10 <url>
    

    对于MacOS X:

    $ ping -c1 -t10 <url>
    

    不是一条线,但这将等待10秒后超时:

    if ping -c 1 -W 10 www.google.com 1>/dev/null; then 
        echo Success; 
    else 
        echo Failed; 
    fi
    
        2
  •  0
  •   Pavlo Hrybok    8 年前

    https://linux.die.net/man/1/timeout
    你的单行线应该是这样的:

    timeout 50 bash -c "while true; do if ping -c1 -i1 8.8.8.8 &>/dev/null; then echo "up"; break; fi; done"