加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

怎样用十行 bash shell 脚本监控 Linux?

发布时间:2022-05-04 10:26:23 所属栏目:系统 来源:互联网
导读:监控我们的环境对于服务器运维来说至关重要,尤其是在部署新的应用程序时。如今,公司每天都使用开源解决方案来监控系统资源。但是,当出于测试的目的来监控一定时间时,bash 脚本会派上用
  监控我们的环境对于服务器运维来说至关重要,尤其是在部署新的应用程序时。如今,公司每天都使用开源解决方案来监控系统资源。但是,当出于测试的目的来监控一定时间时,bash 脚本会派上用场。
 
  在本教程中,我们将编写一个 bash shell 脚本,它将输出一个三列表,来显示我们机器上的内存、磁盘和 CPU 的百分比。
 
  让我们开始吧!
 
  该脚本基本上由三个主要部分组成:
 
  1. 监控内存:
  复制
  free -m | awk 'NR==2{printf "%.2f%%tt", $3*100/$2 }'
  9.24%
 
  1.
  2.
  ​​free -m​​ 是用于显示已使用和空闲内存的命令,输出如下:
 
  复制
  [root@localhost tmp]# free -m
               total       used       free     shared    buffers     cached
  Mem:           996         92        904          0         11         31
  -/+ buffers/cache:         49        947
  Swap:         1583          0       1583
 
  但是,我们需要从上面的输出中获取第二行的总内存和已用内存。我们可以使用 AWK 来从给定输出中提取数据。
 
  AWK 是一种用于文本处理和数据提取的编程语言。它是大多数 UNIX 系统的标准功能。​​awk ‘NR==2’​​ 从第二行提取数据。​​$3​​ 和 ​​$2​​ 分别充当已用量和总量。
 
  为了在一定时间内运行一次循环,我们可以定义一个变量 ​​$end​​,它从 bash 脚本开始的时间开始计算当前的秒数,因此是 ​​SECONDS​​,并在当前秒数上加上一个数字。所以一个小时就是 3600 秒。
 
  上述代码片段的第二行指出,只要​​$SECONDS​​(当前秒数)小于 ​​$SECONDS+3600​​,​​while​​ 循环就会继续执行。因此,我们定义了循环的开始时间和结束时间,以及将每个循环暂停 5 秒的睡眠时间。循环内部是每 5 秒将那三个变量分配一次新值,以及将输出三个资源使用情况的 ​​echo "$MEMORY$DISK$CPU"​​。
 
  完整代码如下:
 
  复制
  #! /bin/bash
  printf "MemoryttDiskttCPUn"
  end=$((SECONDS+3600))
  while [ $SECONDS -lt $end ]; do
  MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%tt", $3*100/$2 }')
  DISK=$(df -h | awk '$NF=="/"{printf "%stt", $5}')
  CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%ttn", $(NF-2)}')
  echo "$MEMORY$DISK$CPU"
  sleep 5
  done
 
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  上面的代码将输出以下内容:
 
  复制
  [root@localhost tmp]# ./stats.sh
  Memory Disk CPU
  9.34% 7% 0.00%
  9.34% 7% 0.00%
  9.34% 7% 0.00%
  9.34% 7% 0.00%
  ^C[root@localhost tmp]#
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  您始终可以将数据输出到日志文件:
 
  复制
  [root@localhost tmp]# ./stats.sh >> log.txt
  1.
  Stress 测试
 
  由于机器上几乎没有任何负载,我们可以使用 ​​stress​​ 来使 CPU 和内存负载一段时间。
 
  现在我们可以使用命令 ​​stress​​ 来负载我们的机器。例如,通过指定两个 CPU 密集型进程、一个 I/O 密集型进程和一个内存分配器进程,对系统施加 4 个平均负载,如下所示。以下压力测试将运行 1 小时。
 
  关于如何为所有系统管理员创建一个非常容易且有用的 bash 脚本的教程到此结束。

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读