Temperatura della CPU integrata nel prompt dei comandi di Bash


18

Mi chiedevo se sarebbe stato possibile ottenere la temperatura della CPU e incorporarla nel prompt dei comandi.

Questo è il mio output per 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)

Potresti mostrarmi come utilizzare la grepfunzione per incorporare la temperatura nel mio prompt dei comandi?



qucik: cat / sys / class / thermal / thermal_zone0 / temp, per me mostra 50000, quando la mia temperatura è di 50 ° C
mondjunge

@mondjunge quei file dipendono molto dall'hardware. Sia i nomi che i percorsi cambieranno a seconda dell'hardware che hai. Sul mio sistema, quel file mostra la temperatura del acpitz-virtual-0dispositivo virtuale e questo è molto diverso dalla temperatura della mia CPU.
terdon,

Puoi usare lo stesso codice che ho nella mia risposta. Funzionerà anche per il tuo sensorsoutput.
terdon,

@terdon: lo so ma non ho il tempo di spiegare, segnalo solo domande duplicate nei miei 5 minuti gratuiti e provo a suggerire una soluzione rapida.
mondjunge

Risposte:


36

Sì, è possibile, ma i dettagli dipendono dal tuo sistema. Nella maggior parte dei casi, il comando sensorsdovrebbe mostrarlo.

  1. Installa il pacchetto necessario

    sudo apt-get install lm-sensors
  2. Esegui sensors-detecte segui le istruzioni

    sudo sensors-detect
  3. Installa eventuali driver extra, se richiesto sensors-detect.

  4. Esegui sensorsper assicurarsi che funzioni

    $ 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. Analizzare l'uscita per ottenere solo la temperatura della CPU.

    Come puoi vedere sopra, l'output sul mio sistema è diverso dal tuo. Tuttavia, la linea che ci interessa qui è la stessa. Puoi ottenere la temperatura della CPU con:

    $ sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    63.0
  6. Modifica il tuo ~/.bashrc(o file equivalente se stai usando un'altra shell) e aggiungi una funzione che esegue il comando sopra:

    show_temp(){
        sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    }
  7. Utilizzare la funzione nel prompt. Per esempio:

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

È davvero necessario installare lm-sensor in Ubuntu? È installato di default in Debian.
Braiam,

1
@Braiam Non è installato di default in 15.10 o 16.04.
cat

1

Installa i sensori lm:

sudo apt-get install lm-sensors

Rileva quali sensori sono disponibili:

sudo sensors-detect

Per mostrare la temperatura:

sensors

5
Quando capisco la domanda, l'OP vuole che la temperatura della CPU appaia nel loro prompt di Bash, come username@hostname (cputemp): /current/directory $- Sanno già come eseguire il sensorscomando in generale, come avrebbero potuto mostrare l'output nella domanda altrimenti?
Byte Commander

3
@ByteCommander a difesa di Bram, l'OP non ha menzionato la sensorssua domanda originale e ha aggiunto l'output solo dopo che l'ho chiesto nella prima revisione della mia risposta. Certo, questa risposta non spiega come mostrare solo la temperatura della CPU né come includerla nel prompt, ma menzionare le sensorsinformazioni utili quando la risposta è stata pubblicata.
terdon,

Su un sistema AMD ho dovuto attivare "IOMMU" nel BIOS prima di poter ottenere la temperatura della CPU (scheda madre MSI con FX8300: impostazioni di overclock -> Funzionalità CPU -> IOMMU, ho cambiato "Disabilitato" in "64 MB" (l'unico altra opzione)).
Peter Mortensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.