首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本到ping的每一秒在一个固定的时间,暂停一个固定的时间,然后重复。

脚本到ping的每一秒在一个固定的时间,暂停一个固定的时间,然后重复。
EN

Unix & Linux用户
提问于 2023-02-06 19:14:03
回答 1查看 125关注 0票数 0

编辑:我的结论是这个问题被张贴在错误的地方。我已发布在一个特定的Mac论坛,并得到了一个答案,立即。

我发现我有时会出现互联网连接问题,持续大约4秒,恢复正常大约15秒,然后再次发生。据我所知,这个问题一次可以持续5到7个小时。我想对它有一个更好的理解,以便我可以与我的互联网服务提供商沟通。

到目前为止,我一直在使用:

代码语言:javascript
复制
ping 8.8.8.8 | while read line; do echo `date` - $line; done

重要的是,它每秒钟包含一个ping时间戳。我有一个脚本来用时间戳来绘制结果。但是,由于问题可能每周只发生两三次,所以它收集了大量不必要的数据,然后我不得不对它们进行整理。

我想要的是每一秒按一个固定的时间(比如5-10分钟),然后暂停一个固定的时间(再说一次,比如5-10分钟)。我知道有一个sleep命令,我尝试过使用它;但是我还没有达到我的目标。

EN

回答 1

Unix & Linux用户

发布于 2023-02-06 19:43:59

您可以更改ping的间隔和集合属性。文档(man ping)包含大量信息,但您可能需要从这里开始。

代码语言:javascript
复制
#!/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调用脚本的其余部分。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/734579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档