在 Linux 系统中获取 CPU 使用率有多种方法,可以通过命令行工具如 `top`, `htop`, `mpstat`, 以及通过读取 `/proc/stat` 文件。下面是几种常用的方法:
方法1: 使用 `top` 命令
`top` 是一个强大的实时系统监视工具:
bash
top
在这个工具中查找 "%Cpu(s)" 部分。
要退出 top 的显示,你可以按 `q` 键。
方法2: 使用 `htop` 命令(需额外安装)
如果你已经安装了 `htop`:
bash
htop
与 top 相似,但界面更直观,更用户友好,也可以提供实时系统状态监控。
安装 htop(例如基于 Debian 的系统,使用 apt;基于 RPM 的系统,用 yum 或 dnf):
`sudo aptget install htop` (对于 Debian/Ubuntu)
`sudo dnf install htop` 或 `sudo yum install htop` (对于 Fedora 和 RedHat 系列)
方法3: 使用 `mpstat`
首先确认已安装了 sysstat包 (通常包含 mpstat 工具),例如在Debian/Ubuntu:
bash
sudo aptget install sysstat
然后:
bash
mpstat P ALL 1
这个命令将显示所有 CPU 的详细性能,刷新周期为 1秒。
方法4:读取 `/proc/stat`(适用于程序开发和高级用户)
你也能直接从 `/proc/stat` 中获取原始CPU统计数据,它提供了最精细控制的可能性。这是一个文本文件,在其中你可以读取当前系统的CPU状态信息。
示例Python脚本获取总体CPU使用率的大概方式如下所示:
python
def read_cpu():
with open("/proc/stat", "r") as file:
line = file.readline()
cpu_stat_info = line.split(" ")
user, nice, system, idle, iowait, irq, softirq, steal = [
float(item) for item in cpu_stat_info[1:]
]
total_jiffies = user + nice + system + idle + iowait + irq + softirq
idle_jiffies = idle + iowait
获取过去几秒钟的差值来估计使用率
def calculate_cpu_usage(old_stats, new_stats):
diff_user, diff_nice, diff_system, _, diff_idle, _ = map(lambda x, y: y x, old_stats[0], new_stats)
return 1 (float(diff_idle)/sum(new_stats)) if sum(new_stats)>0 else "N/A"
old_total= total_jiffies 假设前次总时间是这个
time.sleep(1) 休眠一秒以便计算
print(calculate_cpu_usage((user, nice, system, idle, iowait, irq, steal),(total_jiffies, nice, system, idle, iowait, irq, steal)))
read_cpu()
请注意这种方法需要你编写程序处理,同时也必须小心,确保在多处理器或多重线程环境下正确地聚合数据。
根据你需要的详细程度和使用场景选择适合的方式!希望这些建议对你有所帮助。
发表评论