编辑:我的结论是这个问题被张贴在错误的地方。我已发布在一个特定的Mac论坛,并得到了一个答案,立即。
我发现我有时会出现互联网连接问题,持续大约4秒,恢复正常大约15秒,然后再次发生。据我所知,这个问题一次可以持续5到7个小时。我想对它有一个更好的理解,以便我可以与我的互联网服务提供商沟通。
到目前为止,我一直在使用:
ping 8.8.8.8 | while read line; do echo `date` - $line; done重要的是,它每秒钟包含一个ping时间戳。我有一个脚本来用时间戳来绘制结果。但是,由于问题可能每周只发生两三次,所以它收集了大量不必要的数据,然后我不得不对它们进行整理。
我想要的是每一秒按一个固定的时间(比如5-10分钟),然后暂停一个固定的时间(再说一次,比如5-10分钟)。我知道有一个sleep命令,我尝试过使用它;但是我还没有达到我的目标。
发布于 2023-02-06 19:43:59
您可以更改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的形式运行它。
它每五分钟就连续发送三次。如果有任何成功,就会被认为是"ok“,否则就是”错误“。
另一种选择是删除while … do . done循环构造,并每N分钟从cron调用脚本的其余部分。
https://unix.stackexchange.com/questions/734579
复制相似问题