In die Bash-Eingabeaufforderung eingebettete CPU-Temperatur

18

Ich habe mich gefragt, ob es möglich ist, die CPU-Temperatur zu ermitteln und in die Eingabeaufforderung einzubetten.

Dies ist meine Ausgabe für 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)

Können Sie mir bitte zeigen, wie ich grepdie Temperatur mithilfe der Funktion in meine Eingabeaufforderung einbetten kann?

LinuxSailorTech
quelle
Mögliches Duplikat von Wie erhalte ich die CPU-Temperatur?
Mondjunge
qucik: cat / sys / class / thermal / thermal_zone0 / temp, für mich zeigt es 50000, wenn meine temperatur 50 ° C ist
mondjunge
@mondjunge diese Dateien sind sehr hardwareabhängig. Sowohl die Namen als auch die Pfade ändern sich je nach verwendeter Hardware. Auf meinem System zeigt diese Datei die Temperatur des acpitz-virtual-0virtuellen Geräts an und unterscheidet sich stark von der Temperatur meiner CPU.
Terdon
Sie können den gleichen Code verwenden, den ich in meiner Antwort habe. Dies funktioniert auch für Ihre sensorsAusgabe.
Terdon
@terdon: Ich weiß, aber ich habe keine Zeit zu erklären. Ich markiere einfach doppelte Fragen in meinen freien 5 Minuten und versuche, eine schnelle Lösung zu finden.
Montag

Antworten:

36

Ja, das ist möglich, aber die Details hängen von Ihrem System ab. In den meisten Fällen sollte der Befehl dies sensorsanzeigen.

  1. Installieren Sie das erforderliche Paket

    sudo apt-get install lm-sensors
  2. Führen Sie sensors-detectdie Eingabeaufforderungen aus und befolgen Sie sie

    sudo sensors-detect
  3. Installieren Sie zusätzliche Treiber, wenn sensors-detectSie dazu aufgefordert werden.

  4. Führen Sie aus sensors, um sicherzustellen, dass es funktioniert

    $ 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. Analysieren Sie die Ausgabe, um nur die CPU-Temperatur abzurufen.

    Wie Sie oben sehen können, unterscheidet sich die Ausgabe auf meinem System von Ihrer. Die Linie, die uns hier am Herzen liegt, ist jedoch die gleiche. Sie können die CPU-Temperatur erhalten mit:

    $ sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    63.0
  6. Bearbeiten Sie Ihre ~/.bashrc(oder eine entsprechende Datei, wenn Sie eine andere Shell verwenden) und fügen Sie eine Funktion hinzu, die den obigen Befehl ausführt:

    show_temp(){
        sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    }
  7. Verwenden Sie die Funktion in Ihrer Eingabeaufforderung. Beispielsweise:

    PS1="\u@\h $(show_temp) $ "
terdon
quelle
Ist es wirklich notwendig, lm-sensors in Ubuntu zu installieren? Wird standardmäßig in Debian installiert.
Braiam
1
@Braiam Wird in 15.10 oder 16.04 nicht standardmäßig installiert.
Katze
1

Installieren Sie lm-Sensoren:

sudo apt-get install lm-sensors

Ermitteln Sie, welche Sensoren verfügbar sind:

sudo sensors-detect

So zeigen Sie die Temperatur an:

sensors
Bram Koert
quelle
5
Wie ich die Frage verstehe, möchte das OP, dass die CPU-Temperatur in der Bash-Eingabeaufforderung angezeigt wird: username@hostname (cputemp): /current/directory $- Sie wissen bereits, wie der sensorsBefehl im Allgemeinen ausgeführt wird. Wie hätten sie sonst die Ausgabe in der Frage anzeigen können?
Byte Commander
3
@ByteCommander In Brams Verteidigung erwähnte das OP sensorsin seiner ursprünglichen Frage nichts und fügte die Ausgabe erst hinzu, nachdem ich in der ersten Überarbeitung meiner Antwort darum gebeten hatte. Zugegeben, diese Antwort erklärt nicht, wie man nur die CPU-Temperatur anzeigt oder wie man sie in die Eingabeaufforderung einfügt, aber das Erwähnen sensorswar eine nützliche Information, als die Antwort gepostet wurde.
Terdon
Auf einem AMD-System musste ich "IOMMU" im BIOS aktivieren, bevor ich die CPU-Temperatur abrufen konnte (MSI-Motherboard mit FX8300: Übertaktungseinstellungen -> CPU-Funktionen -> IOMMU, geändert "Deaktiviert" in "64 MB" (die einzige) andere Option)).
Peter Mortensen