我用它lscpu | grep 'MHz'
来获取时钟速度。根据我调用此命令的方法,我得到了不同的结果。
方法一:在终端中输入
CPU MHz: 1200.000
方法二:封装在一个名为test.sh的脚本中
脚本代码:
#! /bin/bash
cpu=$(lscpu | grep 'MHz')
echo $cpu
然后,在终端
$ chmod +x test.sh
$ ./test.sh
输出:
CPU MHz: 1200.000
到目前为止一切顺利。但现在,方法 3:在 Geany 中的 test.sh 上点击“运行或查看当前文件”。输出:
CPU MHz: 2200.000
方法四:编写一个python脚本,名为test.py,调用test.sh。Python
脚本代码:
#! /usr/bin/python
import subprocess
def test():
subprocess.call("./test.sh")
if __name__ == '__main__':
test()
然后,在终端中:
$ python test.py
输出:
CPU MHz: 2200.000
我尝试了 python 和 python3。两者都给出了相同(错误)的结果。
为什么lscpu
间接运行时会给出不同的输出?我该如何修复/规避这个问题?我的代码有问题吗?不管怎样,我正在运行 Ubuntu 13.10。
谢谢 :-)。
答案1
这是一个巧合,是你的系统改变了当前的 CPU 频率。
在终端中使用此命令检查:
watch -n 0 "lscpu | grep 'MHz'"
您将会看到(稍等片刻)系统的 CPU 频率正在切换。
您还可以使用以下命令获取当前的 CPU 频率:
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
以及您的最大/最小 CPU 频率:
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
改变行为?CPU 调节器决定应使用什么频率。请参阅此文档使用最适合您的 CPU 调节器来决定 Linux 内核。
- 获得州长:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- 更换州长:
echo "powersave" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
答案2
大多数现代 CPU 都可以调整其时钟频率。Linux 上的默认调节器是“按需”的,它在空闲时保持较低的时钟速度以节省电量,并在需要时加快速度以进行工作。
看https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt