อุณหภูมิของ CPU ฝังตัวในพรอมต์คำสั่ง Bash


18

ฉันสงสัยว่ามันจะเป็นไปได้หรือไม่ที่จะได้อุณหภูมิของ CPU และฝังลงในพรอมต์คำสั่ง

นี่คือผลลัพธ์ของฉันสำหรับ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)

คุณช่วยแสดงวิธีใช้grepฟังก์ชั่นเพื่อฝังอุณหภูมิลงในพรอมต์คำสั่งของฉันได้ไหม



qucik: cat / sys / class / thermal / thermal_zone0 / temp สำหรับฉันมันแสดงให้เห็น 50,000 เมื่ออุณหภูมิของฉันอยู่ที่ 50 ° C
จันทร์ที่

@mondjunge ไฟล์เหล่านั้นขึ้นอยู่กับฮาร์ดแวร์เป็นอย่างมาก ทั้งชื่อและพา ธ จะเปลี่ยนไปตามฮาร์ดแวร์ที่คุณมี ในระบบของฉันไฟล์นั้นจะแสดงอุณหภูมิของacpitz-virtual-0อุปกรณ์เสมือนและแตกต่างจากอุณหภูมิของ CPU มาก
terdon

คุณสามารถใช้รหัสเดียวกันกับที่ฉันมีในคำตอบของฉัน มันจะทำงานสำหรับsensorsผลลัพธ์ของคุณ
terdon

@terdon: ฉันรู้ แต่ไม่มีเวลาที่จะอธิบายฉันเพียงแค่ทำเครื่องหมายคำถามซ้ำใน 5 นาทีฟรีของฉันและพยายามบอกทางออกอย่างรวดเร็ว
จันทร์ที่

คำตอบ:


36

ใช่เป็นไปได้ แต่รายละเอียดขึ้นอยู่กับระบบของคุณ ในกรณีส่วนใหญ่คำสั่งsensorsควรแสดง

  1. ติดตั้งแพ็คเกจที่จำเป็น

    sudo apt-get install lm-sensors
  2. เรียกใช้sensors-detectและทำตามคำแนะนำ

    sudo sensors-detect
  3. ติดตั้งไดรเวอร์พิเศษหากsensors-detectบอกคุณ

  4. เรียกใช้sensorsเพื่อให้แน่ใจว่าใช้งานได้

    $ 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. แยกเอาต์พุตเพื่อให้ได้อุณหภูมิ CPU เท่านั้น

    อย่างที่คุณเห็นข้างต้นผลลัพธ์ในระบบของฉันแตกต่างจากของคุณ อย่างไรก็ตามบรรทัดที่เราสนใจตรงนี้ก็เหมือนกัน คุณสามารถรับอุณหภูมิของ CPU ได้ด้วย:

    $ sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    63.0
  6. แก้ไขของคุณ~/.bashrc(หรือไฟล์เทียบเท่าหากคุณใช้เชลล์อื่น) และเพิ่มฟังก์ชั่นที่รันคำสั่งด้านบน:

    show_temp(){
        sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    }
  7. ใช้ฟังก์ชั่นในพรอมต์ของคุณ ตัวอย่างเช่น:

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

จำเป็นต้องติดตั้ง lm-sensors ใน Ubuntu หรือไม่? ถูกติดตั้งโดยค่าเริ่มต้นใน Debian
Braiam

1
@Braiam มันไม่ได้ติดตั้งโดยค่าเริ่มต้นใน 15.10 หรือ 16.04
แมว

1

ติดตั้งเซ็นเซอร์ lm:

sudo apt-get install lm-sensors

ตรวจจับเซ็นเซอร์ที่ใช้งานได้:

sudo sensors-detect

เพื่อแสดงอุณหภูมิ:

sensors

5
เมื่อฉันเข้าใจคำถาม OP ต้องการให้อุณหภูมิของ CPU ปรากฏใน Bash prompt ของพวกเขาเช่นusername@hostname (cputemp): /current/directory $- พวกเขารู้วิธีเรียกใช้sensorsคำสั่งโดยทั่วไปแล้วพวกเขาจะสามารถแสดงผลลัพธ์ในคำถามได้อย่างไร
ผู้บัญชาการ Byte

3
@ ByteCommander ในการป้องกันของ Bram, OP ไม่ได้พูดถึงsensorsในคำถามเดิมของพวกเขาและเพิ่มเฉพาะผลลัพธ์หลังจากที่ฉันถามในการแก้ไขครั้งแรกของคำตอบของฉัน ได้รับคำตอบนี้ไม่ได้อธิบายถึงวิธีการแสดง CPU ชั่วคราวเท่านั้นหรือวิธีรวมไว้ในพรอมต์ แต่การกล่าวถึงsensorsเป็นข้อมูลที่มีประโยชน์เมื่อคำตอบถูกโพสต์
terdon

ในระบบ AMD ฉันต้องเปิด "IOMMU" ใน BIOS ก่อนที่ฉันจะได้อุณหภูมิของ CPU (เมนบอร์ด MSI ที่มี FX8300: การตั้งค่าการโอเวอร์คล็อก -> คุณสมบัติของ CPU -> IOMMU เปลี่ยน "Disabled" เป็น "64 MB" (เฉพาะ ตัวเลือกอื่น ๆ ))
Peter Mortensen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.