基于某些因素的断开连接可能会发生,并且由于我并不总是或不能总是使用以太网(因为我使用的是wifi),所以我想检查一下何时或至少多少我在不确定的时间内与互联网断开连接。
我最想知道的是,因为我需要保持连接,并且知道它何时断开连接而不查看进程/作业停止/失败的哪一刻会更有帮助。
所以我尝试使用 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