Linux快速检测网卡流量Shell脚本

2023年 10月 31日 63.6k 0

这个脚本的功能是检测网卡流量,并按规定格式记录在日志中。

具体来说,它做了以下几个步骤:

  • 首先,它设置了语言为英文,以保证输出结果是英文,否则会出现bug。
  • 然后,它定义了一个logfile变量,用来存储日志文件的路径和名称。日志文件的名称是当天的日期,例如29.log
  • 接着,它使用exec命令将后面执行的命令结果输出重定向到logfile日志中。
  • 然后,它使用date命令输出当前的日期和时间,格式为2023-04-14 13:46
  • 接下来,它使用sar命令统计网卡ens33的流量,单位为kb/s。sar命令的参数是1和59,表示每隔1秒采样一次,共采样59次。然后,它使用grep命令过滤出Average和ens33这两行,表示平均值和网卡名称。最后,它使用awk命令格式化输出结果,将流量单位转换为bps,并按照要求的格式输出网卡名称、输入流量和输出流量。
  • 最后,它输出一行分隔符####################,表示一次记录的结束。
  • 这个脚本使用了一个无限循环while : do … done,因此会一直运行下去。由于执行sar命令需要59秒,因此不需要sleep命令来延迟执行。这样就实现了每分钟记录一次网卡流量的功能。
#!/bin/bash
# 检测网卡流量,并按规定格式记录在日志中
# 规定一分钟记录一次oo
# 日志格式如下所示:
# 2023-10-29 13:46


while :
do
   # 设置语言为英文,保障输出结果是英文,否则会出现bugai
   LANG=en
   logfile=/tmp/`date +%d`.log
   # 将下面执行的命令结果输出重定向到logfile日志中
  exec >> $logfile
  date +"%F %H:%M"
   # sar命令统计的流量单位为kb/s,日志格式为bps,因此要*1000*8
  sar -n DEV 1 59|grep Average|grep ens33|awk '{print $2,"t","input:","t",$5*1000*8,"bps","n",$2,"t","output:","t",$6*1000*8,"bps"}'
   echo "####################"
   # 因为执行sar命令需要59秒,因此不需要sleep
done

输出结果:

图片[1]-Linux快速检测网卡流量Shell脚本-不念博客

sar命令

Linux sar命令是一个用来收集、报告或保存系统活动信息的工具。

它可以从多个方面对Linux系统的活动进行报告,比如文件的读写情况、系统调用的使用情况、磁盘I/O、CPU利用率、内存使用状况和进程活动有关的信息等。

它的基本语法是:

sar [options] [-o file]  

其中,options是指定要查看的资源类型,例如

  • -u表示CPU
  • -r表示内存
  • -d表示磁盘等
  • -o file是指定将结果以二进制格式保存到文件中
  • -f file是指定从文件中读取结果
  • interval是指定采样间隔
  • count是指定采样次数

例如,如果要查看每秒钟一次的CPU使用情况,总共查看三次,可以使用以下命令:

sar -u 1 3

如果要查看9月26日的内存使用情况,可以使用以下命令:

sar -r -f /var/log/sa/sa26

如果要查看网络设备的流量情况,可以使用以下命令:

sar -n DEV

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论