Bash
在不確定的時間段內檢查網際網路連接的健康狀況
可能會發生基於某些因素的斷開連接,並且由於我並不總是或不能總是使用乙太網(因為我使用的是 wifi),所以我想檢查我何時或至少有多少與 Internet 斷開連接,數量未定的時間。
我最想知道的是,因為我需要保持連接,並且知道何時斷開連接而不查看程序/作業停止/失敗的時刻會更有幫助。
所以我嘗試使用 ping 作為基礎:
#!/bin/sh retryme() { while ! "$@" do echo "not_working -> $(date)" done } retryme ping google.com
ping
問題是,實際開始和實際 ping之間有 6-5 秒的輕微延遲……(儘管如果我使用標誌ping
,它會減少大約 1 秒左右)-A
除此之外,它也只有在斷開連接時才真正顯示輸出(這是想要的效果),除非我這樣做:
#!/bin/sh -x retryme() { while ! "$@" do echo "not_working -> $(date)" done } pingme() { ping -A google.com &>/dev/null } retryme pingme
但是當網際網路斷開連接並且不使用重試功能“重試”時它會掛起……
有一個更好的方法嗎?可能使用 ping 以外的其他東西(最好使用 POSIX 或 bash,和/或其他 linux 工具)
似乎這樣有效:
#!/bin/sh retryme() { while ! "$@" do echo "not_working -> $(date)" done } pingme() { ping -A -W 1 8.8.8.8 &>/dev/null } retryme pingme