在Linux系统中,top命令是一个常用的性能分析工具,它可以实时显示系统中各个进程的资源占用状况,包括CPU使用率、内存占用等关键信息。虽然top命令主要是一个交互式的工具,用于手动查看系统状态,但通过一些脚本技巧,我们也可以编写程序来自动获取其输出的信息。
需要明确的是top命令的输出包含了大量的信息,而提取CPU使用率需要定位到包含“Cpu(s)”的行,并解析出用户态和内核态的CPU使用率。然而,这种方法可能并不十分精确,因为top命令的输出通常还包括了等待I/O和其他状态的时间。
一个比较精确且直接的方法是使用mpstat命令,它来自sysstat包,可以提供每个CPU核心的详细使用率信息。如果你的系统已经安装了sysstat包,那么使用mpstat将是一个更好的选择。
我们也可以用top命令来查看CPU使用率,以下是一个简单的bash脚本示例:
#!/bin/bash
# 使用top命令获取CPU使用率
get_cpu_usage() {
# 运行top命令,限制输出为1行,并使用grep和awk提取CPU使用率
top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}'
}
# 调用函数并打印CPU使用率
cpu_usage=$(get_cpu_usage)
echo "CPU使用率: ${cpu_usage}%"
在这个脚本中,top -bn1命令以批处理模式运行top,并只更新一次数据。使用grep命令筛选出包含"Cpu(s)"的行,这一行包含了CPU使用率的统计信息。最后,通过awk命令计算用户态和内核态的CPU使用率之和。
需要注意的是,这个脚本提供的CPU使用率可能并不完全准确,因为它没有考虑到等待I/O和其他状态的时间。实际应用中更推荐使用mpstat命令来获取精确的CPU使用率信息。
要使用mpstat命令,需要先安装sysstat包。安装完成后,就可以使用类似以下的命令来查看所有CPU核心的平均使用率:
mpstat -P ALL 1 1 | awk '/^Average:/ {print 100 - $NF"%"}'
这条命令会运行mpstat一次,并打印所有CPU核心的平均空闲率,然后通过awk计算并打印出平均CPU使用率(100%减去空闲率)。
虽然可以使用top命令来查看CPU使用率,但更精确且直接的方法是使用mpstat命令。通过安装和使用sysstat包,我们就可以轻松地获取到系统中各个CPU核心的详细使用率信息,从而更好地了解系统的性能状况。