GNU/Linux >> Tutoriels Linux >  >> Linux

Coloriser la sortie des capteurs ?

J'utilise des sensors pour garder un œil sur les températures du processeur sur la console. Cela fait partie de la sortie :

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)

Je voudrais "coloriser" cette sortie. En particulier, si les températures dépassent un certain seuil, je souhaite qu'elles soient affichées en rouge. Ainsi, par exemple, disons que le seuil est de 60, puis toute occurrence de +60.0°C , +61.0°C , +62.0°C , et ainsi de suite devrait être en rouge (idéalement, je voudrais un niveau orange et un niveau rouge basés sur deux seuils différents, mais une solution à un niveau serait également très bien). Idéalement, cela devrait également fonctionner avec les watch sensors .

Réponse acceptée :

Utilisation : sensors | ./color_sensors.awk

Utilisation avec montre : 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; }

Résultat :


Linux
  1. Faire en sorte que Ls distingue les scripts des fichiers binaires dans la sortie ?

  2. Intercepter l'entrée et la sortie d'un exécutable spécifique ?

  3. Supprimer la redondance des colonnes de sortie ?

  4. Pourquoi Ls -l affiche-t-il une taille différente de Ls -s ?

  5. Comment obtenir la sortie de gdb.execute dans PythonGDB (GDB 7.1) ?

Ccat - Coloriser la sortie de la commande Cat

Comment voir la sortie d'un script Php ?

Est-il possible de coloriser la sortie canalisée à plus?

MYSQL diffère dans la sortie du script

Coloriser la sortie de queue

Rediriger la sortie d'un bloc fonctionnel vers un fichier sous Linux