Bash脚本从SAR报告中获取CPU和内存使用情况

云计算

Bash脚本从SAR报告中获取CPU和内存使用情况

2025-02-16 00:12


在Linux系统中,使用SAR(System Activity Reporter)工具可以方便地监控和记录系统的活动情况,特别是CPU和内存的使用情况。通过Bash脚本,我们可以自动化获取这些数据并进行处理,以便于监控系统性能。 下面是一个使用Bash脚本从SAR报告中获取CPU和内存使用情况的示例,并对每一段代码进行详细解析:

                                            




在Linux系统中,使用SAR(System Activity Reporter)工具可以方便地监控和记录系统的活动情况,特别是CPU和内存的使用情况。通过Bash脚本,我们可以自动化获取这些数据并进行处理,以便于监控系统性能。

下面是一个使用Bash脚本从SAR报告中获取CPU和内存使用情况的示例,并对每一段代码进行详细解析:

脚本示例

#!/bin/bash

# 检查SAR命令是否安装
command -v sar > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
    echo "SAR命令未找到,请先安装sysstat。"
    exit 1
fi

# 获取CPU使用情况
cpu_usage=$(sar -u 1 1 | grep -E '^[0-9]+:[0-9]+:[0-9]+ [A|P]M.*all' | awk '{print $NF}')
echo "当前CPU使用率: $cpu_usage%"

# 获取内存使用情况
memory_usage=$(sar -r 1 1 | grep -E '^[0-9]+:[0-9]+:[0-9]+ [A|P]M.*kbmemfree' | awk '{print $NF}')
echo "当前内存空闲量: $memory_usage KB"

# 如果需要获取更多内存信息,可以使用以下命令获取内存总量和已使用内存量
# total_memory=$(free -k | grep 'Mem:' | awk '{print $2}')
# used_memory=$(free -k | grep 'Mem:' | awk '{print $3}')
# echo "总内存: $total_memory KB"
# echo "已使用内存: $used_memory KB"

exit 0

代码详解

1. 检查SAR命令是否安装

command -v sar > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
    echo "SAR命令未找到,请先安装sysstat。"
    exit 1
fi

这段代码的作用是检查系统中是否安装了SAR命令。如果系统没有安装 sysstat包,command -v sar会返回非零状态,脚本会输出错误信息并退出。sysstat包是包含SAR工具的包,安装它可以方便地监控系统的各项指标。

2. 获取CPU使用情况

cpu_usage=$(sar -u 1 1 | grep -E '^[0-9]+:[0-9]+:[0-9]+ [A|P]M.*all' | awk '{print $NF}')
echo "当前CPU使用率: $cpu_usage%"

此部分通过 sar -u 1 1命令获取系统的CPU使用情况。-u选项表示查看CPU使用情况,1 1表示每秒输出一次数据,并只显示一次结果。然后,使用 grep -E '^[0-9]+:[0-9]+:[0-9]+ [A|P]M.*all'来过滤出包含CPU使用率的行,并通过 awk '{print $NF}'提取该行的最后一个字段(即CPU的空闲率)。最后,通过 echo命令输出当前的CPU使用率。

3. 获取内存使用情况

memory_usage=$(sar -r 1 1 | grep -E '^[0-9]+:[0-9]+:[0-9]+ [A|P]M.*kbmemfree' | awk '{print $NF}')
echo "当前内存空闲量: $memory_usage KB"

此段代码通过 sar -r 1 1命令获取系统的内存使用情况。-r选项表示查看内存使用情况。与获取CPU使用率类似,使用 grep命令提取包含内存空闲量的行,并通过 awk提取最后一个字段来获取内存的空闲量,最后输出结果。

4. 获取更多内存信息(可选)

# total_memory=$(free -k | grep 'Mem:' | awk '{print $2}')
# used_memory=$(free -k | grep 'Mem:' | awk '{print $3}')
# echo "总内存: $total_memory KB"
# echo "已使用内存: $used_memory KB"

这部分代码是可选的,如果需要更多关于内存的详细信息,可以使用 free命令获取内存的总量和已使用的内存量。通过 grep和 awk提取相关数据并输出。

脚本执行流程

  1. 检查是否安装 sysstat工具:首先,脚本会检查系统是否安装了SAR命令。如果没有安装,用户会看到提示信息,建议安装 sysstat
  2. 获取CPU使用率:接着,脚本执行 sar -u 1 1命令获取CPU的使用情况,并提取CPU空闲率。
  3. 获取内存使用情况:同样,脚本通过 sar -r 1 1命令获取内存使用情况,并提取空闲内存量。
  4. 可选的内存详细信息:如果需要更详细的内存数据,可以解除注释并使用 free命令获取内存的总量和已使用量。

注意事项

  • 安装 sysstat:如果没有安装 sysstat包,可以通过以下命令安装:
    • 在Ubuntu/Debian系统中:
      sudo apt-get install sysstat
      
    • 在CentOS/RHEL系统中:
      sudo yum install sysstat
      
  • 数据采样频率sar命令的 1 1参数表示每秒钟采样一次,且只进行一次采样。可以根据需要调整采样频率。
  • 权限:确保脚本具有执行权限。如果没有执行权限,可以使用以下命令赋予脚本执行权限:
    chmod +x script.sh
    

结论

这个脚本是一个简单而高效的工具,用于从SAR报告中提取CPU和内存使用情况,可以帮助系统管理员或运维人员实时监控系统性能。通过结合 sar命令、grepawk等Linux常用工具,能够轻松处理系统资源的监控数据,并在必要时进一步优化系统性能。


标签:
  • Bash
  • SAR
  • CPU
  • 内存