樹莓派有許多系統信息,類似 CPU 細節、處理器的當前溫度、內存大小。但不是所有的信息都放在一個地方,我們來學習一些方法,如何找到樹莓派中這些有趣的數據。
/proc 下的信息
除了標準系統資源工具,好像 ps、 df、 top 和其他一些有用的命令,如: htop、 iotop、 glances, 系統信息可以在 /proc 文件系統下找到。一個最常用的就是 cpuinfo 文件, 包含了系統 CPU 數據。輸入一下命令:
cat /proc/cpuinfo
結果是這樣的:
從輸出可以看出,使用的是 BCM2385 處理器,應該是4核的,並且是居於Arm7的構架。
除了 cupinfo ,在 /proc 文件系統下面還有一些有價值的信息:
如上所示:meminfo、partitions、version 等。這些都可以用 cat 命令來查看:
vcgencmd 命令
Linux 系統可以使用 /proc 來獲取系統信息,樹莓派還有一些這對這塊板子的專有命令,例如: vcgencmd。vcgencmd 表示的是 ‘VideoCore general commands (視頻核心通用命令)’,它可以發送命令給 VideoCore。 VideoCore 是樹莓派中的低功耗多媒體處理器。 vcgencmd 功能強大,用下面的命令可以查看支持的功能參數:
vcgencmd commands
效果是這樣的:
可以看出, vcgencmd 支持測量時鐘頻率、電壓、核心溫度等。
測量溫度
樹莓派設計爲一種小型低功耗的電腦,最大溫度不能超過 85° 攝氏度。如果高於這個溫度就存在設備受到永久性損壞的風險。因此有必要學習如何測量樹莓派的核心溫度。
這個方法很簡單,登陸到樹莓派,然後運行如下命令:
vcgencmd measure_temp
結果如下圖所示:
如果,你想提取裏面的數字應用到程序中,還可以這樣:
vcgencmd measure_temp | sed -En "s/temp=(.*)'C/\1/p"
結果應該是像下面圖中的樣子:
時鐘頻率
另一個有用的信息是 CPU 的當前頻率和最小、最大頻率:
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
也可以查看單核的頻率(cpu0 - cpu3):
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
600MHz ~ 1.5GHz,當前運行在最小頻率,看來使用率還很低。
也可以使用 vcgencmd 來查詢時鐘頻率:
vcgencmd measure_clock CLOCKNAME
其中,CLOCKNAME 可以是 h264, isp, v3d, uart, pwm, emmc, pixel, vec, hdmi, or dpi。也可以用腳本全部打印出來:
for src in arm core h264 isp v3d uart pwm emmc pixel vec hdmi dpi ; do \
echo -e "$src:\t$(vcgencmd measure_clock $src)" ; \
done
電壓
使用 vcgencmd 還可以查詢 core, sdram_c, sdram_i, and sdram_p 的電壓:
vcgencmd measure_volts core
同樣,也可以使用腳本全部列出:
for id in core sdram_c sdram_i sdram_p ; do \
echo -e "$id:\t$(vcgencmd measure_volts $id)" ; \
done
硬編碼
想看看硬編碼打開了嗎,支持這些H264, MPG2, WVC1, MPG4, MJPG, or WMV9:
vcgencmd codec_enabled H264
同樣也有簡便方法看全部:
for codec in H264 MPG2 WVC1 MPG4 MJPG WMV9 ; do \
echo -e "$codec:\t$(vcgencmd codec_enabled $codec)" ; \
done
配置項
使用 get_config 參數可以打印出配置信息:
get_config [config|int|str]
- config - 列出指定的配置參數. 例如: vcgencmd get_config arm_freq
- int - 列出所有已設置的整形配置參數(非零)
- str - 列出所有已設置的字符型配置參數(非零)
內存分配
想知道在 CPU 和 GPU 之間的內存分配情況嗎?可以使用如下命令:
vcgencmd get_mem arm && vcgencmd get_mem gpu
OTP
顯示一次性可編程(OTP)內存的內容:
vcgencmd otp_dump
位置28和30存儲/proc/cpuinfo顯示的序列值和修訂號(序列值還用於確定以太網MAC地址),位置32存儲質保位的值。其他位置的值用途未知。
空閒內存
看看有多少空閒內存供系統使用:
free -m -h
視頻輸出控制
打開關閉視頻輸出:
# 關閉視頻輸出
vcgencmd display_power 0
# 打開視頻輸出
vcgencmd display_power 1