Linux
如何在 linux 中 ping 直到主機已知?
如何 ping 某個地址,找到後停止 ping。
我想在 bash 腳本中使用它,所以當主機啟動時,腳本會繼續 ping,並且從主機可用的那一刻起,腳本會繼續……
Martynas 回答的進一步簡化:
until ping -c1 www.google.com >/dev/null 2>&1; do :; done
注意 ping 本身被用作循環測試;一旦成功,循環結束。循環體為空,空命令“
:
”用於防止語法錯誤。更新:我想到了一種讓 Control-C 乾淨地退出 ping 循環的方法。這將在後台執行循環,擷取中斷(Control-C)信號,並在發生時終止後台循環:
ping_cancelled=false # Keep track of whether the loop was cancelled, or succeeded until ping -c1 "$1" >/dev/null 2>&1; do :; done & # The "&" backgrounds it trap "kill $!; ping_cancelled=true" SIGINT wait $! # Wait for the loop to exit, one way or another trap - SIGINT # Remove the trap, now we're done with it echo "Done pinging, cancelled=$ping_cancelled"
這有點迂迴,但如果你希望循環可以取消,它應該可以解決問題。