Температура процессора, встроенная в командную строку Bash

18

Мне было интересно, можно ли получить температуру процессора и вставить ее в командную строку.

Это мой вывод для sensors:

$}-sensors
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +55.0°C  (high = +87.0°C, crit = +105.0°C)
Core 0:         +55.0°C  (high = +87.0°C, crit = +105.0°C)
Core 1:         +52.0°C  (high = +87.0°C, crit = +105.0°C)

Не могли бы вы показать мне, как использовать grepфункцию для встраивания температуры в мою командную строку?

LinuxSailorTech
источник
Возможный дубликат Как мне узнать температуру процессора?
понедельник
qucik: cat / sys / class / thermal / thermal_zone0 / temp, для меня это показывает 50000, когда моя температура составляет 50 ° C
понедельник,
@mondjunge эти файлы очень зависят от оборудования. И имена, и пути будут меняться в зависимости от того, какое у вас оборудование. В моей системе этот файл показывает температуру acpitz-virtual-0виртуального устройства, которая сильно отличается от температуры моего процессора.
тердон
Вы можете использовать тот же код, который у меня есть в моем ответе. Это также будет работать для вашего sensorsвыхода.
тердон
@terdon: Я знаю, но у меня нет времени объяснять, я просто отмечаю повторяющиеся вопросы в мои бесплатные 5 минут и пытаюсь найти быстрое решение.
понедельник

Ответы:

36

Да, это возможно, но детали зависят от вашей системы. В большинстве случаев команда sensorsдолжна показать это.

  1. Установите необходимый пакет

    sudo apt-get install lm-sensors
  2. Запустите sensors-detectи следуйте инструкциям

    sudo sensors-detect
  3. Установите любые дополнительные драйверы, если sensors-detectговорит вам.

  4. Запустите, sensorsчтобы убедиться, что это работает

    $ sensors
    acpitz-virtual-0
    Adapter: Virtual device
    temp1:        +27.8°C  (crit = +110.0°C)
    temp2:        +29.8°C  (crit = +110.0°C)
    
    coretemp-isa-0000
    Adapter: ISA adapter
    Physical id 0:  +63.0°C  (high = +105.0°C, crit = +105.0°C)
    Core 0:         +62.0°C  (high = +105.0°C, crit = +105.0°C)
    Core 1:         +63.0°C  (high = +105.0°C, crit = +105.0°C)
    
    nct6776-isa-0a00
    Adapter: ISA adapter
    Vcore:                  +1.86 V  (min =  +0.00 V, max =  +1.74 V)  ALARM
    in1:                    +1.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
    AVCC:                   +3.33 V  (min =  +2.98 V, max =  +3.63 V)
    +3.3V:                  +3.33 V  (min =  +2.98 V, max =  +3.63 V)
    in4:                    +1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
    in5:                    +0.00 V  (min =  +0.00 V, max =  +0.00 V)
    in6:                    +0.21 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
    3VSB:                   +3.31 V  (min =  +2.98 V, max =  +3.63 V)
    Vbat:                   +3.18 V  (min =  +2.70 V, max =  +3.63 V)
    fan1:                     0 RPM  (min =    0 RPM)
    fan2:                  3292 RPM  (min =    0 RPM)
    SYSTIN:                  +0.0°C  (high =  +0.0°C, hyst =  +0.0°C)  sensor = thermistor
    CPUTIN:                 +51.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = CPU diode
    AUXTIN:                  +0.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = CPU diode
    PCH_CHIP_CPU_MAX_TEMP:  +58.0°C  (high = +80.0°C, hyst = +75.0°C)
    PECI Agent 0:           +60.0°C  (high = +80.0°C, hyst = +75.0°C)
                                     (crit = +105.0°C)
    PCH_CHIP_TEMP:           +0.0°C  
    PCH_CPU_TEMP:            +0.0°C  
    intrusion0:            OK
    intrusion1:            OK
    beep_enable:           disabled
  5. Разобрать вывод, чтобы получить только температуру процессора.

    Как вы можете видеть выше, вывод в моей системе отличается от вашего. Однако линия, о которой мы заботимся здесь, та же самая. Вы можете получить температуру процессора с помощью:

    $ sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    63.0
  6. Отредактируйте ваш ~/.bashrc(или эквивалентный файл, если вы используете другую оболочку) и добавьте функцию, которая запускает указанную выше команду:

    show_temp(){
        sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    }
  7. Используйте функцию в вашем приглашении. Например:

    PS1="\u@\h $(show_temp) $ "
terdon
источник
Действительно ли необходимо установить lm-сенсоры в Ubuntu? По умолчанию устанавливается в Debian.
Брайам
1
@Braiam По умолчанию не устанавливается в 15.10 или 16.04.
кот
1

Установите LM-датчики:

sudo apt-get install lm-sensors

Определите, какие датчики доступны:

sudo sensors-detect

Чтобы показать температуру:

sensors
Брам Коерт
источник
5
Как я понимаю вопрос, ОП хочет, чтобы температура процессора отображалась в их приглашении Bash, например: username@hostname (cputemp): /current/directory $они уже знают, как sensorsвообще выполнить команду, как они могли бы показать результат в вопросе в противном случае?
Byte Commander
3
@ByteCommander в защиту Брэма, ОП не упомянул sensorsв своем первоначальном вопросе и добавил результаты только после того, как я попросил об этом в первой редакции моего ответа. Конечно, этот ответ не объясняет, как показывать только температуру процессора, и как включить ее в приглашение, но упоминание sensorsбыло полезной информацией, когда ответ был опубликован.
тердон
В системе AMD мне пришлось включить «IOMMU» в BIOS, прежде чем я смог получить температуру процессора (материнская плата MSI с FX8300: настройки разгона -> Особенности процессора -> IOMMU, изменил «Отключено» на «64 МБ» (только другой вариант)).
Питер Мортенсен