Shell - 长 ping 脚本监控网络状态
生产环境中, 网络是否稳定(网络时延)是一个很重要的指标. 为了方便检查网络时延的大小, 我们可以通过ping
命令实现长时间的网络监控.
1 ping 命令的使用
1.1 常用参数
-i
: 每次执行ping操作的间隔时间, 默认是1s;
-c
: 执行ping操作的次数, 默认是一直执行, 除非被中断;
-s
: 指定执行ping操作时发送的包的大小, 默认是56B, 添加报文头之后, 最终发送的是64B.
1.2 使用示例
# 在终端 ping 某个地址, 执行3次, 每次间隔2秒, 每次发送10KB的数据:
[root@localhost ~]# ping -c 3 -i 2 -s 10240 172.16.22.132
# 结果如下:
PING 172.16.22.132 (172.16.22.132) 10240(10268) bytes of data.
10248 bytes from 172.16.22.132: icmp_seq=1 ttl=64 time=0.294 ms
10248 bytes from 172.16.22.132: icmp_seq=2 ttl=64 time=0.383 ms
10248 bytes from 172.16.22.132: icmp_seq=3 ttl=64 time=0.391 ms
--- 172.16.22.132 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.294/0.356/0.391/0.043 ms
2 通过脚本记录时间戳
很多时候, 我们除了监控网络时延的大小, 还想知道网络发生抖动时的具体时间 —— 可以将 ping 的结果通过管道进行处理.
为了方便后期查看, 也防止退出终端时命令被中断, 我们可以通过后台运行命令(脚本)的方式进行操作.
脚本内容如下:
#!/usr/bin/sh
# ping 86400次, 默认间隔1秒, 也就是24小时
ping -c 86400 -i 1 -s 10240 172.16.22.131 | awk '{ print $0"\t" strftime("%D_%H:%M:%S",systime()) }' > ping_result.log
注意: 只有当脚本运行结束(或被kill掉),
awk
命令 才会将结果输出到文件中.
为防止脚本被中断, 可以通过 nohup
令脚本在后台执行:
nohup sh long_ping.sh &
要结束后台进程, 可通过下述方式查找并kill:
[root@localhost ~]# ps aux | grep long
root 36538 0.0 0.0 113120 1344 pts/3 S 16:02 0:00 sh long_ping.sh
root 37451 0.0 0.0 112652 960 pts/3 S+ 16:03 0:00 grep --color=auto long
[root@localhost ~]# kill -9 36538
参考资料
版权声明
出处: 博客园 瘦风-记录时间(https://www.cnblogs.com/shoufeng)
感谢阅读, 如果文章有帮助或启发到你, 点个[好文要顶👆] 或 [推荐👍] 吧😜
本文版权归博主所有, 欢迎转载, 但 [必须在文章页面明显位置标明原文链接], 否则博主保留追究相关人员法律责任的权利.
分类:
10 - Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人