Intereting Posts

Цветной вывод с датчиков

Я использую sensors чтобы следить за температурами процессора на консоли. Это часть результата:

 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) 

Я хотел бы «раскрасить» этот результат. В частности, если температура выше определенного порога, я бы хотел, чтобы они отображались красным цветом. Так, например, допустим, что порог равен 60, тогда любое появление +60.0°C , +61.0°C , +62.0°C и т. Д. Должно быть красным (в идеале я бы хотел оранжевый уровень и красный уровень, основанный на двух разных пороговых значениях, но решение на уровне одного уровня также было бы велико). В идеале это также должно работать с watch sensors .

Применение: sensors | ./color_sensors.awk sensors | ./color_sensors.awk

Использование с часами: watch -c 'sensors | ./color_sensors.awk' 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; } . #!/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; } 

Результат: введите описание изображения здесь