GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausgabe von Sensoren einfärben?

Ich verwende sensors um die CPU-Temperaturen auf der Konsole im Auge zu behalten. Dies ist Teil der Ausgabe:

coretemp-isa-0001
Adapter: ISA adapter
Physical id 1:  +45.0°C  (high = +80.0°C, crit = +90.0°C)
Core 0:         +39.0°C  (high = +80.0°C, crit = +90.0°C)
Core 1:         +39.0°C  (high = +80.0°C, crit = +90.0°C)
Core 2:         +40.0°C  (high = +80.0°C, crit = +90.0°C)
Core 3:         +38.0°C  (high = +80.0°C, crit = +90.0°C)
Core 4:         +40.0°C  (high = +80.0°C, crit = +90.0°C)
Core 8:         +39.0°C  (high = +80.0°C, crit = +90.0°C)
Core 9:         +38.0°C  (high = +80.0°C, crit = +90.0°C)
Core 10:        +38.0°C  (high = +80.0°C, crit = +90.0°C)
Core 11:        +39.0°C  (high = +80.0°C, crit = +90.0°C)
Core 12:        +39.0°C  (high = +80.0°C, crit = +90.0°C)

nouveau-pci-0200
Adapter: PCI adapter
GPU core:     +0.92 V  (min =  +0.92 V, max =  +1.00 V)
fan1:        2220 RPM
temp1:        +48.0°C  (high = +95.0°C, hyst =  +3.0°C)
                       (crit = +105.0°C, hyst =  +5.0°C)
                       (emerg = +135.0°C, hyst =  +5.0°C)

Ich möchte diese Ausgabe „einfärben“. Insbesondere wenn Temperaturen über einer bestimmten Schwelle liegen, möchte ich, dass diese rot dargestellt werden. Nehmen wir zum Beispiel an, der Schwellenwert ist 60, dann tritt jedes Mal +60.0°C auf , +61.0°C , +62.0°C , usw. sollten rot sein (idealerweise hätte ich gerne eine orangefarbene und eine rote Ebene, die auf zwei verschiedenen Schwellenwerten basieren, aber eine einstufige Lösung wäre auch großartig). Idealerweise sollte dies auch mit watch sensors funktionieren .

Akzeptierte Antwort:

Verwendung: sensors | ./color_sensors.awk

Verwendung mit Uhr: watch -c 'sensors | ./color_sensors.awk'

#!/usr/bin/awk -f

BEGIN {
    DEFAULT_COLOR = "\033[;m";
    RED           = "\033[1;31m";
    MAGENTA       = "\033[1;35m";

    # CPU_thresholds
    cpu_high = 60; 
    cpu_middle = 50; 

    # GPU_thresholds
    gpu_high = 80; 
    gpu_middle = 70; 
}

function colorize(temp, mid_trsh, high_trsh) {
    new_color = "";  

    temp_number = temp;
    gsub("[^0-9]","",temp_number);
    gsub(".$","",temp_number);

    if(temp_number >= high_trsh) 
        new_color = RED;
    else if (temp_number >= mid_trsh) 
        new_color = MAGENTA;

    return new_color temp DEFAULT_COLOR;
}

/Core/          { $3 = "\t" colorize($3, cpu_middle, cpu_high); }
/Physical id/   { $4 = "\t" colorize($4, cpu_middle, cpu_high); }
# Multiple spaces added for alignment here - "\t      ".
/temp1/         { $2 = "\t      " colorize($2, gpu_middle, gpu_high) " "; }
                { print; }

Ergebnis:


Linux
  1. Linux – Die Buffers-Spalte in der Ausgabe von Free?

  2. Wie kann man verhindern, dass `ls` die Ausgabe sortiert?

  3. Redundanz aus Ausgabespalten entfernen?

  4. Warum gibt Ls -l eine andere Größe als Ls -s aus?

  5. Wie extrahiere ich die Dauer aus der ffmpeg-Ausgabe?

Ccat – Cat-Befehlsausgabe einfärben

Lassen Sie Ls Skripte von Binärdateien in der Ausgabe unterscheiden?

Ein- und Ausgabe von einer bestimmten ausführbaren Datei abfangen?

Wie kann man die Ausgabe eines Php-Skripts sehen?

Schwanzausgabe einfärben

grep-Ausgabe von lang nach breit