直接回答:树莓派的系统信息分两部分——通用 Linux 的部分看 /proc 和常规命令(free、df、uname),树莓派特有的部分用 vcgencmd(温度、频率、电压、内存分配)。想判断是不是过热降频,直接看 vcgencmd get_throttled 最快。

通用命令:先看这几眼

1
2
3
4
5
6
7
uname -a                      # 内核版本与架构
cat /etc/os-release # 发行版与版本代号
free -h # 内存与交换分区
df -h # 磁盘使用率
lsblk # 块设备与分区,判断是从 SD 卡还是 SSD 启动
cat /proc/device-tree/model # 板子型号
dmesg | tail -50 # 最近的硬件与驱动信息

cat /proc/device-tree/model 这一条特别实用:手上好几块板子、型号记混的时候,它直接告诉你这是 Pi 4B 还是 Pi 5。

/proc 里的 CPU 与内存信息

1
2
3
cat /proc/cpuinfo     # 型号、核心数、各核当前频率
cat /proc/meminfo # 内存明细,比 free 更细
cat /proc/loadavg # 负载

/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
2
3
4
5
6
7
8
vcgencmd measure_temp          # CPU 温度,如 temp=48.3'C
vcgencmd measure_clock arm # 当前 CPU 频率,单位 Hz
vcgencmd measure_volts core # 核心电压
vcgencmd get_throttled # 开机以来是否发生过降频、欠压
vcgencmd get_mem arm # 分配给 ARM 的内存
vcgencmd get_mem gpu # 分配给 GPU 的内存
vcgencmd get_config int # 当前生效的固件配置项
vcgencmd version # 固件版本

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
2
vcgencmd display_power 0    # 关闭
vcgencmd display_power 1 # 打开

长时间无用的 HDMI 输出关掉,能省下一点点功耗,也能减少日志里的相关报错。

做一个小巡检脚本

把上面几条拼起来,就是一个够用的巡检输出:

1
2
3
4
5
6
7
8
#!/usr/bin/env bash
echo "型号: $(cat /proc/device-tree/model)"
echo "温度: $(vcgencmd measure_temp | cut -d= -f2)"
echo "频率: $(vcgencmd measure_clock arm | cut -d= -f2)"
echo "降频: $(vcgencmd get_throttled | cut -d= -f2)"
echo "负载: $(cut -d' ' -f1-3 /proc/loadavg)"
free -h | sed -n '2p'
df -h / | tail -1

配合 watch -n 5 ./check.sh 或者写进 cron 记录到日志,长期观察比随手看一眼有用得多——温度问题大多是慢慢积起来的,等卡顿再去查往往已经发生过很多次降频了。

小结

  • 型号和内核用 /proc/device-tree/model、uname -a;
  • 温度、频率、电压、降频记录用 vcgencmd;
  • 电源不足是树莓派最常见也最难查的故障源,先看 get_throttled;
  • 想长期观察就写成脚本跑 cron,别等问题出现了再手忙脚乱。

本文整理自我自己早先收集的一份树莓派系统信息资料,重新组织成"通用命令 + 树莓派专用命令 + 巡检脚本"的结构,并补上了实践中的判断经验,文字由 AI 协助改写后经我复核。不同型号与系统版本上 vcgencmd 的子命令略有差异,以 vcgencmd commands 的实际输出为准。

这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。

站内搜索

没有找到内容!