当前位置: 首页 > news >正文

【shell】获取ping的时延数据并分析网络情况及常用命令学习

文章目录

    • 获取ping的时延数据并分析网络情况
    • |、||、&、&&辨析
      • tee
      • tail
      • killall

获取ping的时延数据并分析网络情况

网络情况经常让我们头疼,每次都需要手动在终端ping太麻烦了,不如写个脚本ping并将数据带上时间戳存入文件,然后也可以分析哪个时间段网络比较差。

创建一个demo.sh文件:

#!/bin/bash
# 清理日志
net_path="./network/"# 目录存在,删除修改时间为1天前的文件
if  [ -d "${net_path}" ]; then 
echo start delete log 1 days ago...find "${net_path}"/* -name '*.txt' -mtime +1 -exec rm -rf {} \;
echo end delete log ...	
fioutput_file="./network/output.txt"
# 设置目标主机
target_host="baidu.com"# 定义函数获取当前时间戳
get_timestamp() {date +"%Y-%m-%d %H:%M:%S"
}# 循环执行ping命令
while true; do# 获取当前时间戳timestamp=$(get_timestamp)# 执行ping命令并抓取延迟时间ping_result=$(ping -c 1 $target_host | grep time= | awk -F 'time=' '{print $2}' | cut -d ' ' -f 1)# 输出带有时间戳的ping结果echo "$timestamp - Ping: $ping_result ms"echo "$timestamp - Ping: $ping_result ms" >> "$output_file"# 等待1秒后继续执行sleep 1
done

时延数据会存入output.txt中,然后也会自动删除前一天的文件。

最后,可将txt导入excel,生成图表看什么时候网络较差:

在这里插入图片描述

更新后:

#!/bin/bash
net_path="./network/"
target_host="baidu.com" # need config# if folder exist
if [ ! -d "$net_path" ]; thenmkdir -p "$net_path"echo "folder not exist: $net_path"
elseecho "folder exist: $net_path"
fi# get timestamp
get_timestamp() {date +"%Y-%m-%d %H:%M:%S"
}# autoclean
if  [ -d "${net_path}" ]; then 
echo start delete log 1 days ago...find "${net_path}"/* -name '*.txt' -mtime +0 -exec rm -rf {} \;
echo end delete log ...	
fi# get ping value
filename_prefix="${net_path}ping"
timestamp=$(get_timestamp)
filename="${filename_prefix}_${timestamp}.txt"while true; doping_result=$(ping -c 1 $target_host | grep time= | awk -F 'time=' '{print $2}' | cut -d ' ' -f 1)echo "$timestamp - Ping: $ping_result ms"   # displayecho "$timestamp - Ping: $ping_result ms" >> "$filename"    # logsleep 1
done

|、||、&、&&辨析

竖线‘|’在linux中是管道符的意思,将‘|’前面命令的输出作为’|'后面的输入;

双竖线‘||’,用双竖线‘||’分割的多条命令,执行的时候遵循如下规则:如果前一条命令为真,则后面的命令不会执行,如果前一条命令为假,则继续执行后面的命令;

&同时执行多条命令,不管命令是否执行成功;

&&可同时执行多条命令,当碰到执行错误的命令时,将不再执行后面的命令。如果一直没有错误的,则执行完毕。

用的时候,先记住‘|’是管道符,&是并行执行,‘||’和&&分别是他们的进阶版。

tee

tee是一种文件管理命令,tee命令用于读取标准输入的数据,并将其内容输出成文件。如:

tee 1.txt
ls -l | tee 2.txt

可用于打印终端输出和日志等。

tail

tail 命令可用于查看文件的内容,有一个常用的参数-f,常用于查阅正在改变的日志文件。如:

tail 1.txt
tail -f 1.txt

可用于查看日志文件变化。

killall

kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便。kill后常跟PID代号,而killall后常跟进程名。如:

kill -9 8178
killall -9 bash
killall -9 roscore
killall -9 rosmaster

可用于退出进程。

以上。

http://www.lryc.cn/news/107675.html

相关文章:

  • 石子合并一章通(环形石子合并,四边形不等式,GarsiaWachs算法)(内附封面)
  • Docker快速入门笔记
  • 【Excel】记录Match和Index函数的用法
  • SolidUI社区-从开源社区角度思考苹果下架多款ChatGPT应用
  • 插入排序讲解
  • 杀疯了的ChatGPT——开启AI智能交流新纪元 「文末有彩蛋」
  • web爬虫第五弹 - JS逆向入门(猿人学第一题)
  • P5731 【深基5.习6】蛇形方阵
  • Python实现GA遗传算法优化循环神经网络回归模型(LSTM回归算法)项目实战
  • ESD防静电监控系统在SMT产线中的应用案例
  • Vue+Nodejs+Express+Minio 实现本地图片上传
  • em3288 linux_4.19 第一次烧写无法进入内核的情况
  • 【Java多线程学习5】什么是悲观锁,什么是乐观锁?如何实现乐观锁、乐观锁存在哪些问题
  • OSPF协议RIP协议+OSPF实验(eNSP)
  • leetcode每日一练-第108题-将有序数组转换为二叉搜索树
  • 王道《操作系统》学习(二)—— 进程管理(二)
  • Vulnhub: shenron: 3靶机
  • Kubernetes高可用集群二进制部署(二)ETCD集群部署
  • mysql主从复制及原理
  • MQTT服务器详细介绍:连接物联网的通信枢纽
  • 通过VBA宏合并Excel工作表
  • Mac 定时重启 TouchBar 脚本(缓解闪烁问题)
  • Redis主从复制、哨兵机制、集群分片
  • 字段填充策略 FieldFill
  • Docker run 启动容器报错
  • Golang之路---03 面向对象——类型断言
  • Atcoder 做题记录
  • C++之观察者模式(发布-订阅)
  • 无头单链表,有完整测试程序
  • 2023年第四届“华数杯”数学建模思路 - 案例:FPTree-频繁模式树算法