Temperatur CPU tertanam di Bash command prompt

18

Saya bertanya-tanya apakah mungkin untuk mendapatkan suhu CPU dan menanamkannya ke command prompt.

Ini adalah output saya untuk 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)

Bisakah Anda menunjukkan kepada saya cara menggunakan grepfungsi untuk menanamkan suhu ke command prompt saya?

LinuxSailorTech
sumber
Kemungkinan rangkap dari Bagaimana cara mendapatkan suhu CPU?
mondjunge
qucik: cat / sys / class / thermal / thermal_zone0 / temp, bagi saya ini menunjukkan 50000, ketika suhu saya 50 ° C
mondjunge
@mondjunge file-file itu sangat tergantung pada perangkat keras. Baik nama dan jalur akan berubah tergantung pada perangkat keras apa yang Anda miliki. Di sistem saya, file itu menunjukkan suhu acpitz-virtual-0perangkat virtual dan itu sangat berbeda dari suhu CPU saya.
terdon
Anda dapat menggunakan kode yang sama yang saya miliki dalam jawaban saya. Ini juga akan berfungsi untuk sensorsoutput Anda .
terdon
@terdon: Saya tahu tetapi tidak punya waktu untuk menjelaskan, saya hanya menandai pertanyaan duplikat dalam 5 Menit gratis saya dan mencoba untuk memberikan solusi cepat.
mondjunge

Jawaban:

36

Ya, itu mungkin, tetapi detailnya tergantung pada sistem Anda. Dalam kebanyakan kasus, perintah sensorsharus menunjukkannya.

  1. Instal paket yang diperlukan

    sudo apt-get install lm-sensors
  2. Jalankan sensors-detectdan ikuti petunjuknya

    sudo sensors-detect
  3. Instal driver tambahan apa pun jika sensors-detectdiminta.

  4. Jalankan sensorsuntuk memastikan itu berhasil

    $ 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. Parsing output hanya untuk mendapatkan suhu CPU.

    Seperti yang Anda lihat di atas, output pada sistem saya berbeda dari milik Anda. Namun, garis yang kami pedulikan di sini adalah sama. Anda bisa mendapatkan suhu CPU dengan:

    $ sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    63.0
  6. Edit ~/.bashrcfile Anda (atau file yang setara jika Anda menggunakan shell lain) dan tambahkan fungsi yang menjalankan perintah di atas:

    show_temp(){
        sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    }
  7. Gunakan fungsi di prompt Anda. Sebagai contoh:

    PS1="\u@\h $(show_temp) $ "
terdon
sumber
Apakah benar-benar perlu untuk menginstal lm-sensor di Ubuntu? Diinstal secara default di Debian.
Braiam
1
@Braiam Ini tidak diinstal secara default di 15.10 atau 16.04.
kucing
1

Instal lm-sensor:

sudo apt-get install lm-sensors

Deteksi sensor apa yang tersedia:

sudo sensors-detect

Untuk menunjukkan suhu:

sensors
Bram Koert
sumber
5
Ketika saya mengerti pertanyaannya, OP ingin suhu CPU muncul di Bash prompt mereka, seperti username@hostname (cputemp): /current/directory $- Mereka sudah tahu cara menjalankan sensorsperintah secara umum, bagaimana mereka bisa menunjukkan output dalam pertanyaan?
Byte Commander
3
@ByteCommander dalam pembelaan Bram, OP tidak menyebutkan sensorsdalam pertanyaan awal mereka dan hanya menambahkan output setelah saya memintanya dalam revisi pertama jawaban saya. Memang, jawaban ini tidak menjelaskan bagaimana menampilkan suhu CPU saja atau bagaimana memasukkannya ke dalam prompt, tetapi menyebutkan sensorsinformasi yang berguna ketika jawabannya diposting.
terdon
Pada sistem AMD saya harus mengaktifkan "IOMMU" di BIOS sebelum saya bisa mendapatkan suhu CPU (motherboard MSI dengan FX8300: Pengaturan overclocking -> Fitur CPU -> IOMMU, mengubah "Disabled" menjadi "64 MB" (satu-satunya pilihan lain)).
Peter Mortensen