Temperatura da CPU incorporada no prompt de comando do Bash

18

Eu queria saber se seria possível obter a temperatura da CPU e incorporá-lo no prompt de comando.

Esta é a minha saída para 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)

Você poderia me mostrar como usar a grepfunção para incorporar a temperatura no meu prompt de comando?

LinuxSailorTech
fonte
Possível duplicata de Como obtenho a temperatura da CPU?
Mondjunge 31/05
qucik: cat / sys / class / térmica / thermal_zone0 / temp, para mim mostra 50000, quando minha temperatura é de 50 ° C
mondjunge
@mondjunge esses arquivos são muito dependentes de hardware. Os nomes e os caminhos serão alterados dependendo do hardware que você possui. No meu sistema, esse arquivo mostra a temperatura do acpitz-virtual-0dispositivo virtual e é muito diferente da temperatura da minha CPU.
terdon 31/05
Você pode usar o mesmo código que tenho na minha resposta. Também funcionará para sua sensorssaída.
terdon 31/05/16
@terdon: Eu sei, mas não tenho tempo para explicar, apenas marquei perguntas duplicadas nos meus 5 minutos gratuitos e tento sugerir uma solução rápida.
Mondjunge 31/05

Respostas:

36

Sim, é possível, mas os detalhes dependem do seu sistema. Na maioria dos casos, o comando sensorsdeve mostrá-lo.

  1. Instale o pacote necessário

    sudo apt-get install lm-sensors
  2. Execute sensors-detecte siga as instruções

    sudo sensors-detect
  3. Instale quaisquer drivers extras, se for sensors-detectsolicitado.

  4. Execute sensorspara garantir que funcione

    $ 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. Analise a saída para obter apenas a temperatura da CPU.

    Como você pode ver acima, a saída no meu sistema é diferente da sua. No entanto, a linha com a qual nos preocupamos aqui é a mesma. Você pode obter a temperatura da CPU com:

    $ sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    63.0
  6. Edite seu ~/.bashrc(ou arquivo equivalente se estiver usando outro shell) e adicione uma função que execute o comando acima:

    show_temp(){
        sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    }
  7. Use a função em seu prompt. Por exemplo:

    PS1="\u@\h $(show_temp) $ "
Terdon
fonte
É realmente necessário instalar o lm-sensores no Ubuntu? É instalado por padrão no Debian.
Braiam 31/05
11
@Braiam Não está instalado por padrão em 15.10 ou 16.04.
cat
1

Instale os sensores lm:

sudo apt-get install lm-sensors

Detecte quais sensores estão disponíveis:

sudo sensors-detect

Para mostrar a temperatura:

sensors
Bram Koert
fonte
5
Pelo que entendi, o OP quer que a temperatura da CPU apareça no prompt do Bash, como username@hostname (cputemp): /current/directory $- Eles já sabem como executar o sensorscomando em geral, como teriam sido capazes de mostrar a saída da pergunta de outra maneira?
Byte Commander
3
@ByteCommander em defesa de Bram, o OP não mencionou sensorsna pergunta original e apenas adicionou a saída depois que eu pedi na primeira revisão da minha resposta. Concedida, esta resposta não explica como mostrar apenas a temperatura da CPU nem como incluí-la no prompt, mas mencionar sensorsinformações úteis quando a resposta foi postada.
Terdon #
Em um sistema AMD, tive que ativar "IOMMU" no BIOS antes de obter a temperatura da CPU (placa-mãe MSI com FX8300: Configurações de overclock -> Recursos da CPU -> IOMMU, alterei "Disabled" para "64 MB" (o único outra opção)).
Peter Mortensen