Linux монітор температури за 5 хвилин

Взагалі за допомогою аплету stdin можна багато чого розмістити на робочому столі ;)

«UNIX простий. Але треба бути генієм, щоб зрозуміти його простоту. Денніс Рітчі.

Філософія UNIX - не просто зведення правил. Це ідеологія, яку застосовуєш щодня, бо так справді зручно та просто. Буває, що пояснити цю концепцію дуже важко, але я спробую зробити це на реальному прикладі — на одному із завдань, яке мені довелося нещодавно вирішувати.

Одне з найважливіших правил UNIX-way - правило композиції: "Розробляйте програми так, щоб їх можна було поєднати з іншими програмами". Саме такі програми нам зараз знадобляться. Ось, наприклад, популярний плазма-аплет stdin дозволяє показати виведення іншої програми прямо на робочому столі. Це дуже до речі, оскільки наше завдання зводиться до простішого – написати скрипт, що виводить температуру всіх пристроїв! Відразу виникають питання — чи буде складним цей скрипт, скільки часу знадобиться на його написання? Небагато, адже програми для зчитування температури у нас є, і потрібно лише «зачесати» їхній висновок.

# nvidia-settings -q [gpu:0]/GPUCoreTemp

Тут послідовно виводяться ідентифікатор пристрою, назва моделі диска, його температура і одиниці вимірювання.

Звісно, ​​дивитися інформацію у такому вигляді дуже незручно. Тому ми перетворюємо виведення кожної програми. Наприклад, текст від sensors піддамо такій обробці:

# sensors grep 'Core' awk '< print $1 " " $2 " " $3; >' sed -e 's/+//' -e 's/^/CPU /'

Тут написано, що потрібно взяти висновок від sensors, вибрати тільки рядки, що містять Core (утиліта grep). Вийде

Далі потрібно вибрати 1-й, 2-й та 3-й стовпці (уявимо, що це текстова таблиця) та роздрукувати їх через пробіл (утилітаawk). Вийде

Потім видалити "+" і додати на початку рядка "CPU" (утиліта sed). Вийде

Тут ми знову використали правило композиції – об'єднали роботу чотирьох програм, щоб досягти потрібного результату. Кожна з невеликих програм grep, awk, sed вміє якісно виконувати своє завдання, для якої ця програма створювалася. grep призначена для вибору рядків за критерієм, awk працює з текстовими таблицями, sed виконує зміну рядків. Разом вони сила.

В результаті вийшов наступний скрипт:

Виводить він таке:

Тепер залишилося віддати скрипт аплету stdin, виставити потрібний інтервал оновлення – і все готово – Ви можете дивитися температуру на робочому столі в режимі реального часу.

монітор

Отже, величезна перевага цього підходу - можливість зібрати особисте рішення з універсальних компонентів як з цеглинок. Можливо, для деяких здасться складним написання такого коду. Звичайно, щоб інтегрувати всі компоненти за 5 хвилин, потрібен певний досвід. Проте витрачений з його придбання час окупається з лишком. Спробуйте і у Вас вийде.