bash - 打印正确的 MHz 或 GHZ 数字取决于 CPU 缩放

标签 bash awk cpu frequency

我有这个脚本来获取 RPi 的当前 CPU 速度

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq | awk '{if($NF+0>1000000)printf "%.1f GHz\n",$NF/10000; else printf "%.f MHz\n",$NF}'
结果是
pi@pi-hole:~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq | awk '{if($NF+0>1000000)printf "%.1f GHz\n",$NF/10000; else printf "%.f MHz\n",$NF}'
600000 MHz
pi@pi-hole:~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq | awk '{if($NF+0>1000000)printf "%.1f GHz\n",$NF/10000; else printf "%.f MHz\n",$NF}'
150.0 GHz
我想将输出转换/显示为 600 MHz1.5 GHz (为了适合 6 位数字取决于缩放)。我能够始终以 MHz 显示,但是当 CPU 超过 999 MHz 时,由于多一位数字,它会破坏我的脚本布局。
很抱歉这个问题,但我是 bash 的新手。
谢谢!

最佳答案

使用 GNU awk:

awk 'length==6{printf("%.0f MHz\n", $0/10^3); next} length==7{printf("%.1f GHz\n", $0/10^6)}' /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
输出:
600兆赫
750兆赫
1.0 GHz
1.5GHz

关于bash - 打印正确的 MHz 或 GHZ 数字取决于 CPU 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64182008/

相关文章:

Python CPU 和 RAM 内存使用情况

c++ - OpenCV:寻找 CPU 密集度较低的帧捕获+调整大小并进入缓冲方式:如何优化我的代码?

android - `Serial` 中的 `/proc/cpuinfo` 字段是否对每个 Android 设备都是唯一的?

arrays - Bash - 使用数组删除文件

awk - 将百分比添加到制表符分隔文本中的列

bash - 如何在 Azure Devops bash 任务中使用可能未定义的 secret 变量

python - 按每行的前两个字符拆分大型平面文件

linux 命令删除列,添加 id 列并添加另一个额外的列 unix/linux awk

bash - grep 如何处理 DOS 行尾?

linux - 将部分字符串转换为另一个字符集