いくつかの要因によって切断が発生する可能性があり、常にイーサネットを使用しないか、常に利用できないため(Wi-Fiを使用しているため)、いつまたは少なくとも確認したかったのです。どのくらい未知の時間中にインターネット接続が失われました。
私が最も知りたいのは、接続を維持する必要があるため、プロセス/作業が停止/失敗した瞬間を見ずに、いつ接続が切断されるのかを知るのがより役に立ちます。
だから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ツールを好む)。
答え1
次のように動作するようです。
#!/bin/sh
retryme() {
while ! "$@"
do
echo "not_working -> $(date)"
done
}
pingme() {
ping -A -W 1 8.8.8.8 &>/dev/null
}
retryme pingme