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
提取相关数据并输出。
脚本执行流程
- 检查是否安装
sysstat
工具:首先,脚本会检查系统是否安装了SAR命令。如果没有安装,用户会看到提示信息,建议安装 sysstat
。
- 获取CPU使用率:接着,脚本执行
sar -u 1 1
命令获取CPU的使用情况,并提取CPU空闲率。
- 获取内存使用情况:同样,脚本通过
sar -r 1 1
命令获取内存使用情况,并提取空闲内存量。
- 可选的内存详细信息:如果需要更详细的内存数据,可以解除注释并使用
free
命令获取内存的总量和已使用量。
注意事项
- 安装
sysstat
:如果没有安装sysstat
包,可以通过以下命令安装:- 在Ubuntu/Debian系统中:
sudo apt-get install sysstat
- 在CentOS/RHEL系统中:
sudo yum install sysstat
- 在Ubuntu/Debian系统中:
- 数据采样频率:
sar
命令的1 1
参数表示每秒钟采样一次,且只进行一次采样。可以根据需要调整采样频率。 - 权限:确保脚本具有执行权限。如果没有执行权限,可以使用以下命令赋予脚本执行权限:
chmod +x script.sh
结论
这个脚本是一个简单而高效的工具,用于从SAR报告中提取CPU和内存使用情况,可以帮助系统管理员或运维人员实时监控系统性能。通过结合 sar
命令、grep
、awk
等Linux常用工具,能够轻松处理系统资源的监控数据,并在必要时进一步优化系统性能。
标签:
- Bash
- SAR
- CPU
- 内存