Nhiệt độ CPU được nhúng trong dấu nhắc lệnh Bash


18

Tôi đã tự hỏi nếu nó có thể có được nhiệt độ CPU và nhúng nó vào dấu nhắc lệnh.

Đây là đầu ra của tôi cho 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)

Bạn có thể vui lòng chỉ cho tôi cách sử dụng grepchức năng để nhúng nhiệt độ vào dấu nhắc lệnh của tôi không?



qucik: cat / sys / class / therm / therm_zone0 / temp, đối với tôi nó hiển thị 50000, khi nhiệt độ của tôi là 50 ° C
mondjunge

@mondjunge những tập tin đó phụ thuộc rất nhiều vào phần cứng. Cả tên và đường dẫn sẽ thay đổi tùy thuộc vào phần cứng bạn có. Trên hệ thống của tôi, tập tin đó hiển thị nhiệt độ của acpitz-virtual-0thiết bị ảo và điều đó rất khác với nhiệt độ của CPU của tôi.
terdon

Bạn có thể sử dụng cùng một mã tôi có trong câu trả lời của tôi. Nó cũng sẽ làm việc cho sensorsđầu ra của bạn .
terdon

@terdon: Tôi biết nhưng không có thời gian để giải thích, tôi chỉ đánh dấu các câu hỏi trùng lặp trong 5 phút miễn phí của mình và cố gắng đưa ra giải pháp nhanh chóng.
mondjunge

Câu trả lời:


36

Vâng, có thể, nhưng các chi tiết phụ thuộc vào hệ thống của bạn. Trong hầu hết các trường hợp, lệnh sensorssẽ hiển thị nó.

  1. Cài đặt gói cần thiết

    sudo apt-get install lm-sensors
  2. Chạy sensors-detectvà làm theo lời nhắc

    sudo sensors-detect
  3. Cài đặt bất kỳ trình điều khiển bổ sung nếu sensors-detectnói với bạn.

  4. Chạy sensorsđể đảm bảo nó hoạt động

    $ 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. Phân tích đầu ra để chỉ lấy nhiệt độ CPU.

    Như bạn có thể thấy ở trên, đầu ra trên hệ thống của tôi khác với bạn. Tuy nhiên, dòng chúng tôi quan tâm ở đây là như nhau. Bạn có thể lấy nhiệt độ CPU bằng:

    $ sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    63.0
  6. Chỉnh sửa ~/.bashrc(hoặc tệp tương đương nếu bạn đang sử dụng shell khác) và thêm chức năng chạy lệnh ở trên:

    show_temp(){
        sensors | grep -oP 'Physical.*?\+\K[0-9.]+'
    }
  7. Sử dụng chức năng trong lời nhắc của bạn. Ví dụ:

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

Có thực sự cần thiết để cài đặt cảm biến lm trong Ubuntu không? Được cài đặt theo mặc định trong Debian.
Braiam

1
@Braiam Nó không được cài đặt theo mặc định trong 15.10 hoặc 16.04.
con mèo

1

Cài đặt cảm biến lm:

sudo apt-get install lm-sensors

Phát hiện những cảm biến có sẵn:

sudo sensors-detect

Để hiển thị nhiệt độ:

sensors

5
Theo tôi hiểu câu hỏi, OP muốn nhiệt độ CPU xuất hiện trong dấu nhắc Bash của họ, như username@hostname (cputemp): /current/directory $- Họ đã biết cách chạy sensorslệnh nói chung, làm thế nào họ có thể hiển thị đầu ra trong câu hỏi?
Chỉ huy Byte

3
@ByteCommander để bảo vệ Bram, OP đã không đề cập đến sensorscâu hỏi ban đầu của họ và chỉ thêm đầu ra sau khi tôi yêu cầu nó trong lần sửa đổi đầu tiên của câu trả lời của tôi. Cấp, câu trả lời này không giải thích cách chỉ hiển thị tạm thời CPU cũng như làm thế nào để đưa nó vào lời nhắc, nhưng đề cập đến sensorslà thông tin hữu ích khi câu trả lời được đăng.
terdon

Trên hệ thống AMD, tôi phải bật "IOMMU" trong BIOS trước khi tôi có thể nhận được nhiệt độ CPU (bo mạch chủ MSI với FX8300: Cài đặt ép xung -> Tính năng CPU -> IOMMU, đã thay đổi "Đã tắt" thành "64 MB" (chỉ tùy chọn khác)).
Peter Mortensen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.