GNU/Linux >> Znalost Linux >  >> Linux

Zabarvit výstup ze senzorů?

Používám sensors sledovat teploty procesoru na konzole. Toto je část výstupu:

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)

Chtěl bych tento výstup ‚zabarvit‘. Zejména pokud jsou teploty nad určitou hranicí, chtěl bych, aby byly zobrazeny červeně. Řekněme například, že prahová hodnota je 60, pak jakýkoli výskyt +60.0°C , +61.0°C , +62.0°C , a tak dále by měly být červené (v ideálním případě bych chtěl oranžovou úroveň a červenou úroveň založenou na dvou různých prahových hodnotách, ale jednoúrovňové řešení by bylo také skvělé). V ideálním případě by to mělo fungovat také s watch sensors .

Přijatá odpověď:

Použití: sensors | ./color_sensors.awk

Použití s ​​hodinkami: 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; }

Výsledek:


Linux
  1. Je možné obarvit výstup potrubím na více?

  2. Jak převést výstup z grep do cp?

  3. Příkazový řádek:Extrahujte podřetězec z výstupu

  1. Linux – sloupec Buffers ve výstupu zdarma?

  2. Rozlišovat Ls na výstupu skripty od binárních souborů?

  3. Odstranění redundance z výstupních sloupců?

  1. Proč má Ls -l na výstupu jinou velikost než Ls -s?

  2. Jak extrahovat dobu trvání z výstupu ffmpeg?

  3. Jak získat výstup z gdb.execute v PythonGDB (GDB 7.1)?