Температура процесора, вбудована в командний рядок 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функції вбудувати температуру в мій командний рядок?



qucik: cat / sys / class / Thermal / thermal_zone0 / temp, для мене це показує 50000, коли моя температура 50 ° C
порядок дня

@mondjunge ці файли залежать від обладнання. Імена, і шляхи змінюватимуться залежно від обладнання. У моїй системі цей файл показує температуру acpitz-virtual-0віртуального пристрою, яка сильно відрізняється від температури мого процесора.
тердон

Ви можете використовувати той самий код, який я маю у своїй відповіді. Це також буде працювати для вашого sensorsрезультату.
тердон

@terdon: Я знаю, але не маю часу пояснювати, я просто відзначаю дублювані питання у вільних 5 хвилин і намагаюся натякнути на швидке рішення.
mondjunge

Відповіді:


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) $ "

Чи справді потрібно встановити 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команду взагалі, як би вони змогли показати результат у питанні інакше?
Байт-командир

3
@ByteCommander на захист Брама, ОП не згадував sensorsу своєму первісному запитанні та додав висновок лише після того, як я попросив його в першій редакції моєї відповіді. Звичайно, ця відповідь не пояснює, як відображати лише темп процесора, а також як їх включати в підказку, але згадка sensorsкорисної інформації під час публікації відповіді.
тердон

У системі AMD мені довелося включити "IOMMU" в BIOS, перш ніж я міг отримати температуру процесора (материнська плата MSI з FX8300: налаштування розгону -> Особливості процесора -> IOMMU, "Disabled" змінили на "64 MB" (єдиний інший варіант)).
Пітер Мортенсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.