编辑:我的结论是这个问题发布在错误的地方。我发布在 Mac OS 特定论坛中,立即得到了答案。
我发现有时会出现互联网连接问题,持续约 4 秒,约 15 秒恢复正常,然后再次发生。据我所知,这个问题一次可能会持续 5 到 7 个小时。我想更好地了解它,以便我可以将其传达给我的互联网服务提供商。
到目前为止,我一直在使用:
ping 8.8.8.8 | while read line; do echo `date` - $line; done
重要的是,它每秒都会包含一个 ping 时间戳。我有一个脚本来使用时间戳绘制结果。但由于该问题可能每周只发生 2 到 3 次,因此它收集了很多不必要的数据,然后我必须对这些数据进行整理。
我想要的是每秒 ping 一次设定的时间(例如 5-10 分钟),然后暂停一段设定的时间(再次,例如 5-10 分钟)。我知道有一个sleep
命令并且我尝试过使用它;但我还没有达到我的目标。
答案1
您可以更改 的间隔和集合属性ping
。文档 ( man ping
) 包含大量信息,但您可能想从此开始。
#!/bin/sh
target=1.1.1.1 # Ping target
delay=$((60*5)) # Seconds (5 minutes)
while :
do
# Linux (GNU)
# ping -4 -q -n -c3 -i1 -w4 "$target" >/dev/null 2>&1 && st=ok || st=error
# Mac (OSX)
ping -q -n -c3 -i1 -t4 "$target" >/dev/null 2>&1 && st=ok || st=error
printf "%s - %s\n" "$(date)" "$st"
sleep "$delay"
done
将其放入诸如 之类的文件中pingit
,并使用 使脚本可执行chmod a+x pingit
。然后您可以将其运行为./pingit
.
它每五分钟发送三个连续的 ping。如果成功,则视为“正常”,否则视为“错误”。
另一种选择是删除while … do
...循环构造并从每个循环done
中调用脚本的其余部分cron
氮分钟。