Temperatura de la CPU integrada en el símbolo del sistema Bash


18

Me preguntaba si sería posible obtener la temperatura de la CPU e incrustarla en el símbolo del sistema.

Esta es mi salida 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)

¿Podría mostrarme cómo usar la grepfunción para integrar la temperatura en mi símbolo del sistema?



qucik: cat / sys / class / térmica / thermal_zone0 / temp, para mí muestra 50000, cuando mi temperatura es de 50 ° C
mondjunge

@mondjunge esos archivos dependen mucho del hardware. Tanto los nombres como las rutas cambiarán según el hardware que tenga. En mi sistema, ese archivo muestra la temperatura del acpitz-virtual-0dispositivo virtual y eso es muy diferente de la temperatura de mi CPU.
terdon

Puedes usar el mismo código que tengo en mi respuesta. También funcionará para su sensorssalida.
terdon

@terdon: Lo sé pero no tengo tiempo para explicarlo, solo marco preguntas duplicadas en mis 5 minutos gratis y trato de dar una solución rápida.
mondjunge

Respuestas:


36

Sí, es posible, pero los detalles dependen de su sistema. En la mayoría de los casos, el comando sensorsdebería mostrarlo.

  1. Instale el paquete necesario

    sudo apt-get install lm-sensors
  2. Corre sensors-detecty sigue las indicaciones

    sudo sensors-detect
  3. Instale cualquier controlador adicional si se lo sensors-detectindica.

  4. Corre sensorspara asegurarte de que funciona

    $ 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. Analice la salida para obtener solo la temperatura de la CPU.

    Como puede ver arriba, la salida en mi sistema es diferente a la suya. Sin embargo, la línea que nos importa aquí es la misma. Puede obtener la temperatura de la CPU con:

    $ sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    63.0
  6. Edite su ~/.bashrc(o archivo equivalente si está utilizando otro shell) y agregue una función que ejecute el comando anterior:

    show_temp(){
        sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    }
  7. Use la función en su solicitud. Por ejemplo:

    PS1="\u@\h $(show_temp) $ "

¿Es realmente necesario instalar sensores lm en Ubuntu? Se instala por defecto en Debian.
Braiam

1
@Braiam No está instalado por defecto en 15.10 o 16.04.
gato

1

Instalar sensores lm:

sudo apt-get install lm-sensors

Detecta qué sensores están disponibles:

sudo sensors-detect

Para mostrar la temperatura:

sensors

55
Según tengo entendido la pregunta, el OP quiere que la temperatura de la CPU aparezca en su indicador Bash, como username@hostname (cputemp): /current/directory $: Ya saben cómo ejecutar el sensorscomando en general, ¿cómo podrían haber mostrado la salida en la pregunta de otra manera?
Byte Commander

3
@ByteCommander en defensa de Bram, el OP no mencionó sensorsen su pregunta original y solo agregó el resultado después de que lo solicité en la primera revisión de mi respuesta. Por supuesto, esta respuesta no explica cómo mostrar solo la temperatura de la CPU ni cómo incluirla en la solicitud, pero mencionar sensorsfue información útil cuando se publicó la respuesta.
terdon

En un sistema AMD tuve que encender "IOMMU" en el BIOS antes de poder obtener la temperatura de la CPU (placa madre MSI con FX8300: Configuración de overclocking -> Características de la CPU -> IOMMU, cambié "Disabled" a "64 MB" (el único otra opción)).
Peter Mortensen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.