Выход lscpu отличается при вызове косвенно?

Я использую lscpu | grep 'MHz' для получения моей тактовой частоты. Я получаю разные результаты, основанные на методе, который я вызываю этой командой.

Метод 1: ввод его в терминал CPU MHz: 1200.000

Способ 2. Инкапсуляция в сценарий под названием test .sh Код сценария:

#! /bin/bash
cpu=$(lscpu | grep 'MHz')
echo $cpu

Затем в terminaL

$ chmod +x test.sh
$ ./test.sh

Выход: CPU MHz: 1200.000

So это так хорошо. Но теперь, метод 3: hiting «запустить или просмотреть текущий файл» в Geany на test.sh. Выход: CPU MHz: 2200.000

Способ 4: запись скрипта 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

I Я попробовал как python, так и python3. Оба дают тот же (ошибочный) результат.

Почему lscpu дает другой вывод, когда он запущен косвенно? И как я могу исправить это / обойти это? Что-то не так в моем коде? Для чего это стоит, я запускаю Ubuntu 13.10.

Спасибо :-).

1
задан 8 April 2014 в 18:49

1 ответ

Большинство современных процессоров могут регулировать свою тактовую частоту. Регулятор по умолчанию на linux является «по требованию», который поддерживает низкую тактовую частоту, чтобы экономить электроэнергию при работе на холостом ходу, и ускоряет ее работу при необходимости.

См. Https://www.kernel.org/ документ / Документация / CPU-FREQ / governors.txt

0
ответ дан 24 May 2018 в 09:41

Другие вопросы по тегам:

Похожие вопросы: