如何在 linux 中 ping 直到知道主机超时 X 秒?
How to ping in linux until host is known with X seconds timeout?
我正在尝试等待设备在我的代码中启动,我不想使用睡眠来等待他。
我的问题是有时设备无法启动并且我在使用时陷入循环:
until ping -c1 www.google.com &>/dev/null; do :; done
while true; do ping -c1 www.google.com > /dev/null && break; done
我如何尝试 ping 设备 X 秒并使用一个衬里打印 "DEAD" 或 "ALIVE"?
您需要 -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
您可以使用此 linux 实用程序:https://linux.die.net/man/1/timeout
你的 oneliner 应该是这样的:
timeout 50 bash -c "while true; do if ping -c1 -i1 8.8.8.8 &>/dev/null; then echo "up"; break; fi; done"
我正在尝试等待设备在我的代码中启动,我不想使用睡眠来等待他。 我的问题是有时设备无法启动并且我在使用时陷入循环:
until ping -c1 www.google.com &>/dev/null; do :; done
while true; do ping -c1 www.google.com > /dev/null && break; done
我如何尝试 ping 设备 X 秒并使用一个衬里打印 "DEAD" 或 "ALIVE"?
您需要 -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
您可以使用此 linux 实用程序:https://linux.die.net/man/1/timeout
你的 oneliner 应该是这样的:
timeout 50 bash -c "while true; do if ping -c1 -i1 8.8.8.8 &>/dev/null; then echo "up"; break; fi; done"