Системный монитор Conky: простота и мощь
Программное обеспечение
Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.
Постоянная ссылка: http://www.nixp.ru/articles/39.html
Несомненно, любой системный администратор и каждый второй пользователь UNIX-подобной ОС знает не один десяток команд, позволяющих показать ему необходимую информацию о состоянии системы.
Примечание: Статья была впервые опубликована в электронном издании «Open Source» (выпуск №013 от 03.11.2006). Ее размещение на nixp.ru производится в соответствии с разрешением со стороны редакции и автора материала.
Несомненно, любой системный администратор и каждый второй пользователь UNIX-подобной ОС знает не один десяток команд, позволяющих показать ему необходимую информацию о состоянии системы. Однако ведь зачастую гораздо удобнее иметь какие-либо подобные важные данные все время на виду. Наблюдение за состоянием машины в режиме online может не отнимать дополнительных усилий — для этого давно и существуют системные мониторы. Причем помимо системной информации они научились отображать и другие полезные сведения. Conky — один из таких системных мониторов, легковесный и многофункциональный.
Что это за Conky и где оно живет?
Код системного монитора Conky основан на разработках другого аналогичного проекта — torsmo. Работает он формально во всех POSIX-системах (хотя есть, например, и некоторые применяемые только к FreeBSD опции), распространяется бесплатно и под лицензией BSD (как и его предшественник).
Conky предназначен для графического сервера X11 и работает в нем либо как самостоятельное окно, либо накладываясь на фон рабочего стола (фон его самого при этом является прозрачным). Программой отображается различный обновляемый каждые n секунд (интервал задается переменной update_interval) текст, который для удобства и наглядности может сопровождаться графиками. Среди стандартных данных для вывода — имя машины, uptime, текущие время и дата, загрузка процессора и оперативной памяти, текущий трафик по сетевым интерфейсам, свободное пространство в любых точках монтирования, сведения по почтовому POP3/IMAP-ящику, статус XMMS и другие. При этом Conky способен подключаться к Mldonkey и MPD, чтобы выводить получаемые от них данные.
Но все это — лишь ничтожно малая часть возможностей Conky. Просто потому, что к нему элементарным образом добавляется любой скрипт собственного написания. А это, как нетрудно догадаться, открывает дверь в бесконечные возможности, ограниченные лишь собственными нуждами и фантазиями. Пример такого скрипта (для отображения погоды) приведен в конце этой статьи.
Последний релиз Conky на данный момент — 1.4.2 — был представлен в середине мая 2006 года. Ссылки на исходники и пакеты, а также рекомендации по установке опубликованы на сайте программы. (Для меня все проблемы решились привычным apt-get install conky, а пользователям Gentoo достаточно выполнить emerge app-admin/conky.)
Конфигурация Conky
Все настройки системного монитора Conky для текущего пользователя хранятся в файле .conkyrc, который необходимо создать в соответствующем домашнем каталоге. Основное его содержимое интуитивно понятно — набор строк типа «опция значение». Полный перечень доступных опций опубликован в двух документах сайта Conky: таблица переменных и таблица настроек.
Так, например, можно задать местоположение Conky на рабочем столе:
alignment bottom_right gap_x 7 gap_y 40
Соответственно, системный монитор будет отображаться в правом нижнем углу экрана со сдвигом на 7 пикселей от правой части (по горизонтали) и на 40 — от низа (по вертикали). После указания различных глобальных настроек Conky в конфиге идет опция TEXT, вслед за которой с новой строки начинается формат отображаемых данных. Например, строками:
${color #3d2a8c}CPU:${color #3d2a8c} $cpu% ${cpugraph 000000 ffffff}
— создается надпись «CPU: загруженность_процессора_в_процентах %» (с цветом шрифта для текста — #3d2a8c), под которой будет выведен график загрузки процессора за последнее время. Следующие строки:
${color #711919}eth0 up: ${upspeedf eth0}k/s ${alignr}${totalup eth0} total ${upspeedgraph eth0}
— выведут надпись «eth0 up: текущая_скорость_выкачивания_по_интерфейсу_eth0 k/s общий_трафик_интерфейса_eth0 total» (последняя часть надписи будет смещена в правую часть строки) и график по загрузке интерфейса eth0. Вызов внешнего скрипта осуществляется, например. так:
${color #1b1b1b}${execi 1800 ~/.config/conky/weather.sh}
В этом случае скрипт ~/.config/conky/weather.sh будет вызываться каждые 1800 секунд, и результат его работы отображается цветом #1b1b1b.
Чтобы более подробно ознакомиться с тем, как задаются различные данные в TEXT (да и формируется файл настроек Conky вообще), достаточно взглянуть на следующий наглядный пример .conkyrc:
alignment bottom_right gap_y 40 gap_x 7
update_interval 4
use_xft yes xftfont Courier:size=12
use_spacer yes background no own_window no double_buffer yes draw_shades yes draw_outline no draw_borders no stippled_borders 0 border_margin 9 border_width 1 no_buffers yes uppercase no
default_color grey90 default_shade_color black default_outline_color DarkGrey
TEXT ${color #6e4300}$nodename$color${alignr}${color #313131}$sysname $kernel${color #00387e} ${time %F}${alignr}${color #00387e}${time %k:%M:%S}${color} ${color #313131}Uptime:${alignr}${color #313131}$uptime${alignr}
$color$stippled_hr ${color #1b1b1b}${execi 1800 ~/.config/conky/weather.sh} $color$stippled_hr ${color #3d2a8c}CPU:${color #3d2a8c} $cpu% ${cpugraph 000000 ffffff} ${color #3d2a8c}RAM:${color #3d2a8c} $memperc% ${memgraph 000000 ffffff} CPU:${color #3d2a8c} ${i2c 9191-0290 temp 1}C${color #3d2a8c} -- MB:${color #3d2a8c} ${i2c 9191-0290 temp 3}C $color$stippled_hr ${color #711919}eth0 up: ${upspeedf eth0}k/s ${alignr}${totalup eth0} total ${upspeedgraph eth0} $color$stippled_hr ${color #711919}eth1 down: ${downspeedf eth1}k/s ${alignr}${totaldown eth1} total ${downspeedgraph eth1} ${color #711919}eth1 up: ${upspeedf eth1}k/s ${alignr}${totalup eth1} total ${upspeedgraph eth1} $color$stippled_hr ${alignc}${color #313131}TCP In: ${tcp_portmon 1 32767 count} Out: ${tcp_portmon 32768 61000 count} $color$stippled_hr ${color #000000}root: ${color #3d2a8c}${fs_bar 5,100 /} ${alignr}${color #000000}${fs_free_perc /}% ${color #000000}audio: ${color #3d2a8c}${fs_bar 5,100 /mnt/audio} ${alignr}${color #000000}${fs_free_perc /mnt/audio}% ${color #000000}video: ${color #3d2a8c}${fs_bar 5,100 /mnt/video} ${alignr}${color #000000}${fs_free_perc /mnt/video}% $color$stippled_hr
Кроме того, целый ряд разнообразных примеров в виде скриншотов и готовых конфигов (со всеми необходимыми скриптами, если таковые используются) можно найти на conky.sourceforge.net/screenshots.html.
Погода в Conky
Поскольку информация о текущих (и ближайших) метеорологических условиях на рабочем столе давно стало привычным и для многих уже просто необходимым требованием для удобной работы на компьютере, на этом примере и рассмотрим возможность Conky выводить сведения, получаемые от исполнения произвольного скрипта.
Обозначенный в конфиге скрипт ~/.config/conky/weather.sh, который я использую на своем десктопе, — труд программиста с ником boojit, который был модифицирован его коллегой, известным под псевдонимом Hellfre. В своей работе скрипт использует утилиты curl (для получения данных о погоде с сервера) и xslt (для представления этих данных в XML). Информация о погоде собирается с сайта weather.com.
В комментариях к скрипту указан URL, по которому можно найти архив с оригинальной версией скрипта, но на момент написания статьи соответствующий сервер по такому запросу выдавал ошибку 404. В связи с этим его скромное содержимое приведу в статье:
#!/bin/sh # ID местоположения; в данном примере -- Москва (РФ) # как выбрать другой, см. ниже LOCID=RSXX0063 # предоставлять данные в метрах UNITS=m # путь к скрипту и XSLT-файлу (про него см. ниже) RUNDIR=/home/shurup/.config/conky/ # пути к утилитам CURLCMD=/usr/bin/curl XSLTCMD=/usr/bin/xsltproc # URL для получения данных CURLURL="http://xoap.weather.com/weather/local/$LOCID?cc=*&unit=$UNITS&dayf=2" # имя XSLT-файла XSLT=$RUNDIR/weather.xslt # итоговая исполняемая команда eval "$CURLCMD \"$CURLURL\« 2>/dev/null| $XSLTCMD $XSLT — $FILTER»
Нужный «Location ID» можно определить по URL http://xoap.weather.com/search/search?where=ГОРОД, подставив английское название своего города вместо ГОРОД. Например, запрос http://xoap.weather.com/search/search?where=Saint%20Petersburg покажет RSXX0091 для российского Санкт-Петербурга (кроме него, там представлены одноименные города различных штатов США — не перепутайте), а http://xoap.weather.com/search/search?where=Minsk — BOXX0005 для Минска.
Используемый файл weather.xslt задает форматирование для отображения полученных с weather.com сведений о погоде. Пример его содержимого можно также найти здесь и привести к удобному вам виду. Главное — сохранить его в соответствии с переменными из скрипта weather.sh.
В сети можно легко найти и другие варианты скриптов для определения данных о погоде. Вот пример такого аналога, написанного на Ruby и собирающего информацию с Yahoo!: http://briancarper.net/2006/09/23/yahoo-weather-for-conky/.
-
Популярные в этом разделе:
- «Обзор системы фильтрации спама rspamd: возможности, конфигурация, работа»,
- «Защищаем себя средствами GnuPG»,
- «Своё интернет-радио с Icecast».
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1