Персонализируйте вывод сенсора и сохраните его в файл

Мне было интересно, как переформатировать вывод терминала для записи информации. В частности, я хотел бы переформатировать вывод команды sensors из пакета lm-sensors и записать ее в файл. Результат выглядит примерно так:

 acpitz-virtual-0 Adapter: Virtual device temp1: +61.0°C (crit = +99.0°C) temp2: +29.8°C (crit = +99.0°C) coretemp-isa-0000 Adapter: ISA adapter Physical id 0: +63.0°C (high = +86.0°C, crit = +100.0°C) Core 0: +62.0°C (high = +86.0°C, crit = +100.0°C) Core 1: +59.0°C (high = +86.0°C, crit = +100.0°C) Core 2: +63.0°C (high = +86.0°C, crit = +100.0°C) Core 3: +61.0°C (high = +86.0°C, crit = +100.0°C) radeon-pci-0100 Adapter: PCI adapter temp1: +61.5°C 

Моя цель для переформатирования заключается в том, что для последующего использования данных с gnuplot (построение в реальном времени). Поэтому результат должен выглядеть примерно так:

 # Timestamp [hh:mm:ss] temp1 [°C] temp2 [°C] ... 13:45:52 65.0 29.0 . 13:45:53 66.0 28.0 . 13:45:54 64.0 27.0 . 13:45:55 55.0 26.0 . ... ... ... . 

Я хотел бы использовать это на нескольких компьютерах с другим количеством датчиков, для чего потребуется какой-то цикл. Но откуда и где будет один цикл и как устранить избыточные строки (например, acpitz-virtual-0, Adapter: Virtual device, …). Также я знаю о возможностях пакета lm-sensors для создания графиков. Но я хотел бы реализовать решение доморощенного, а также держать вопрос более общим.

  • Как контролировать напряжение процессора для Dell XPS15 9550 (Skylake i5-6300HQ) под Linux
  • Как узнать, что означает tempX для вывода датчиков?
  • Как запросить статус датчиков рощи?
  • Как добавить датчики и охлаждающие устройства в therm-conf.xml
  • Как измерить свет?
  • One Solution collect form web for “Персонализируйте вывод сенсора и сохраните его в файл”

    Я получил ту же проблему и реализовал решение:

    Используя sed для синтаксического анализа выходных данных sensors с регулярными выражениями, результат добавляется к файлу журнала.

    1. Дата написана как временная метка UNIX для записи и форматирования в stdout. Для подавления разрыва строки используется команда echo -n "$(date +"%H:%M:%S") .
    2. Затем вывод sensors передается в sed для анализа каждой линии, чтобы найти температуру, ища °C
    3. Результатом является агония, передаваемая в sed . Теперь строка разделена на три части: имя датчика в начале с двоеточием и пробелами ^[a-zA-Z0-9 ]*:\s* , температура, состоящая из знака, чисел и точки \([0-9.+-]*\) а остальное – в конец строки .*$ . Вторая часть обозначена ссылкой с помощью скобок.
    4. Результат снова передается в sed для удаления разрывов строк. Нажми для деталей
    5. Сценарии спят в течение X секунд. (В моем случае 5 секунд.)

    Полученный пакетный скрипт:

     # Printing the names of the columns as first row in file echo "Time; temp1; temp2; Physical id 0; Core 0; Core 1; Core 2; Core 3; SIO Temp; temp3" > Temperatures.log while true do # Printing the time and all temperatures to stdout echo -n "$(date +"%H:%M:%S"): " sensors | sed -n "/°C/p" | sed "s/^[a-zA-Z0-9 ]*:\s*\([0-9.+-]*\).*$/\1/" | sed ':a;N;$!ba;s/\n/;\t/g' # Logging time as UNIX time and temperatures to file echo -n "$(date +"%s"); " >> Temperatures.log sensors | sed -n "/°C/p" | sed "s/^[a-zA-Z0-9 ]*:\s*\([0-9.+-]*\).*$/\1/" | sed ':a;N;$!ba;s/\n/;\t/g' >> Temperatures.log # Sleeping for X seconds sleep 5 done 
    Interesting Posts

    Является ли `dig ptr` допустимым способом выполнения обратного DNS-запроса?

    Кто крадет мои деньги?

    Можно ли использовать переменную среды для определения псевдонима?

    Как указать символы, используя шестнадцатеричные коды в `grep`?

    Значение аппаратной платформы в команде uname

    Проблема с BASH dd

    Flash Player установлен, но не работает в firefox fedora21 x86_64

    Уязвимость Bash CVE-2014-6271 (Shellshock) исправлена ​​на Debian 6.0 (Squeeze)

    как сохранить yum от обновления файла, который я изменил?

    Запустить ssh-соединение при запуске

    Выполнение cron 9 до 5 и в полночь

    Указание порта с произвольным мониторингом с autossh

    Является ли мой процессор перегрева моего процессора (Dual Core i5) или графическим процессором (Nvidia 320M), и могу ли я исправить его в Linux Mint?

    Как включить доступ к USB-устройствам у гостей VirtualBox?

    Может ли SSH прокси запрашивать у удаленной системы через мою локальную систему в Интернете?

    Linux и Unix - лучшая ОС в мире.