直接回答:树莓派的系统信息分两部分——通用 Linux 的部分看 /proc 和常规命令(free、df、uname),树莓派特有的部分用 vcgencmd(温度、频率、电压、内存分配)。想判断是不是过热降频,直接看 vcgencmd get_throttled 最快。
通用命令:先看这几眼
1 | uname -a # 内核版本与架构 |
cat /proc/device-tree/model 这一条特别实用:手上好几块板子、型号记混的时候,它直接告诉你这是 Pi 4B 还是 Pi 5。
/proc 里的 CPU 与内存信息
1 | cat /proc/cpuinfo # 型号、核心数、各核当前频率 |
/proc/cpuinfo 里的 Hardware、Revision 字段能看出具体版本。BogoMIPS 只是粗略指标,不同型号之间别拿来横向比较。
CPU 温度也可以直接从内核读,这一步在所有 Linux 上通用:
1 | cat /sys/class/thermal/thermal_zone0/temp # 输出 48500 表示 48.5℃ |
vcgencmd:树莓派专用
树莓派带了一个 vcgencmd 工具,读的是 VideoCore 固件里的数据。注意它在较新的系统上位于 /usr/bin/vcgencmd,老教程里的 /opt/vc/bin/vcgencmd 已经过时了。
1 | vcgencmd measure_temp # CPU 温度,如 temp=48.3'C |
get_throttled 怎么读
输出是一个位掩码,比如 throttled=0x50000。它记录的是开机以来是否发生过这些情况:
| 位 | 含义 |
|---|---|
| 0 | 当前欠压 |
| 1 | 当前被降频 |
| 2 | 当前被限流 |
| 3 | 当前温度超限 |
| 16 | 曾经欠压 |
| 17 | 曾经降频 |
| 18 | 曾经限流 |
| 19 | 曾经温度超限 |
所以 0x50000(第 16、18 位)表示"以前发生过欠压和限流,现在已恢复"。看到高位被置起来,就该换一个够功率的电源、加散热片或者降一点频率了。
树莓派上电源不足引起的怪问题非常多:USB 设备随机掉线、Wi-Fi 断流、甚至 SD 卡写坏,追根溯源经常就是电压不够。这一条命令是排查这类玄学问题的第一站。
内存分配
较老的树莓派上 GPU 和 CPU 共用内存,vcgencmd get_mem arm 和 get_mem gpu 能看到划分。做无头服务器(不接显示器)时可以把 GPU 内存调到 16~64MB,把内存让给系统;跑图形或视频解码时则要保证 GPU 那边够用。这个值在 /boot/firmware/config.txt 里用 gpu_mem 调整,改完要重启。
视频输出控制
接显示器调试时偶尔需要关掉视频输出省电,或者反过来强制打开:
1 | vcgencmd display_power 0 # 关闭 |
长时间无用的 HDMI 输出关掉,能省下一点点功耗,也能减少日志里的相关报错。
做一个小巡检脚本
把上面几条拼起来,就是一个够用的巡检输出:
1 |
|
配合 watch -n 5 ./check.sh 或者写进 cron 记录到日志,长期观察比随手看一眼有用得多——温度问题大多是慢慢积起来的,等卡顿再去查往往已经发生过很多次降频了。
小结
- 型号和内核用
/proc/device-tree/model、uname -a; - 温度、频率、电压、降频记录用
vcgencmd; - 电源不足是树莓派最常见也最难查的故障源,先看
get_throttled; - 想长期观察就写成脚本跑 cron,别等问题出现了再手忙脚乱。
本文整理自我自己早先收集的一份树莓派系统信息资料,重新组织成"通用命令 + 树莓派专用命令 + 巡检脚本"的结构,并补上了实践中的判断经验,文字由 AI 协助改写后经我复核。不同型号与系统版本上 vcgencmd 的子命令略有差异,以 vcgencmd commands 的实际输出为准。
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。