/ Статьи / Системное / Conky. Подробная настройка /

Conky. Подробная настройка

Дата публикации: Sept. 18, 2009, 3:15 p.m.
Теги: Conky, настройка, системный монитор, Linux,
Автор: Brainsburn

Conky Подробная настройка Conky. Установка и настройка Conky.
Conky — системный монитор для Linux. Настройка Conky. Мониторинг системы в Linux.
conkylogo_1253267644.png
Почему разработчики выбрали такой логотип для Conky, вы можете узнать на http://conky.sourceforge.net/aboutconky.html


Итак, вступление. Сonky — многофункциональный полностью настраиваемый системный монитор для Linux и BSD систем. Если вы запустите conky сразу после установки, то сможете подумать, что conky — некрасивая и неудобная программа. На самом деле это в корне не так. Conky нужно настроить и, если это сделать правильно, все будет супер.

Предупреждение: если вы не хотите утруждать свои нежные мозги чтением непонятных слов и набиранием их вручную с клавиатуры (ужас-то какой!), то до conky вы не доросли и можете закрыть эту страницу :Р Если вас это не напугало — читайте дальше ;)

Как я уже сказал, чтобы conky выглядел хорошо, его надо настроить. Тут два варианта. Первый вариант: найти неплохой но стандартный готовый конфиг и просто использовать его. Найти можно на http://conky.sourceforge.net/screenshots.html.
Второй вариант: дочитать эту статью и написать свой на основе готового, добавляя и редактируя его под себя. Благо, это не сложно и интересно. В этой статье я пошагово разберу свой конфиг и опишу настройки кое-каких дополнительных программ, которые пригодятся в работе conky.

Вступление закончилось, приступим к делу. Настройка Conky
Конфиг conky называется .conkyrc и должен лежать в домашней директории пользователя. Он состоит из двух частей: в первой части описываются настройки внешнего вида, а во второй находится то, что будет непосредственно показано на экране.
Разберем мой конфиг по частям. Пометка: обычный текст - пояснения; текст, выделенный цветом, - строки конфига Conky, их вы можете копировать в свой конфиг, изменяя некоторые параметры под себя. Поехали.


Эти строчки нужны для корректного отображения окна conky. Скорее всего менять их вам не придется.
background no
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

Используем XFT шрифты. Выбор таких шрифтов не велик - Terminus, Vera, Sans и Mono. Вы можете закоментировать эти две строчки и сможете использовать обычные шрифты, но только с XFT шрифтами на моем компьютере conky корректно отображал русские буквы.
use_xft yes
xftfont Terminus:size=8

Поддержка двойного буфера. Без нее conky будет неприятно мигать.
double_buffer yes

Включаем тени - для улучшения читабельности текста.
draw_shades yes

Задаем умолчальные цвета
default_color white
default_shade_color black
default_outline_color blue

Задаем позицию для окна. Conky будет отображаться в левом верхнем углу. Можно изменить на top_right, bottom_left, bottom_right
alignment top_left

Делаем небольшие отступы с краев
gap_x 10
gap_y 10

Так указывается шрифт, если у вас отключено use_xft yes. Для определения правильного имени шрифта используйте утилиту xfontsel. Так шрифт можно указывать, если не используется use_xft. Но без use_xft не отображаются корректно русские буквы. Поэтому пока закоментим.
## font  -schumacher-clean-medium-r-*-*-12-*-*-*-*-*-*-*



Эта строчка определяет, как будет показываться свободная/используемая оперативная память. Если no_buffers no, то кол-во используемой оперативной памяти будет определяться с учетом кэшированной памяти. Если no_buffers yes, кэш будет считаться свободной памятью. Единственного правильного варианта нет. Да и вобще, утилитам которые показывают кол-во свободной/занятой памяти не стоит доверять. Это из-за тонкостей использования динамических библиотек в Linux. Если две программы используют библиотеку в 20МБ, это не означает, что каждая из программ занимает +20МБ в ОЗУ. Именно поэтому в некоторых случаях программы, которые используют "жирные" библиотеки типа QT или GTK, на деле используют оперативную память эффективнее чем остальные. Но и это не всегда верно. Также, программа может "занять" себе довольно большой объем оперативки и, с одной стороны память будет занята, но с другой - свободна. Решать вам. Скажу лишь, что с no_buffers yes, у меня никогда не "занято" больше 500МБ, а с no_buffers no - Conky показывает что "занято" постоянно около 3-4ГБ.
no_buffers no

Все, первая часть конфига окончена. Переходим ко второй.

Все, что будет идти после TEXT, будет выведено на экран. Минимальная настройка conky может выглядеть так: TEXT HELLO
TEXT

Сверху у нас будет написана версия ядра системы. "Kernel: ${kernel}" можно заменять на "Ядро: ${kernel}", как вам угодно. Информация берется из переменной $kernel. Если надо указать какие-то дополнительные параметры, имя переменной заключается в фигурные скобки. Да и без параметров обычно так делают - по-привычке, видимо :)
Kernel: ${kernel}

Дата и время
Date: ${time}

Аптайм системы
Uptime: $uptime

Информация о использовании процессора. ${color a1ccea} указывает цвет последующего текста. Весь текст, следующий после ${color a1ccea} будет синим, поэтому, после этой строчки мы его сделаем опять белым.
Если у вас многоядерный процессор, можно выводить информацию с каждого ядра таким образом ${cpu 1} - для первого ядра, #{cpu 2} - для второго и тд.
${color a1ccea}CPU usage:    $cpu% 

Возвращаем цвет в белый и рисуем полоску загруженности процессора высотой 3 и шириной 140 пикселей
${color ffffff}${cpubar 3,140}

Рисуем движущийся график загрузки процессора высотой 20 и шириной 140 пикселей. "000000 ffffff" означают что график будет окрашен градиентно - от белого к черному. Вы можете изменить цвета на свои или вобще убрать "000000 ffffff", тогда график будет просто белый.
${cpugraph 20,140 000000 ffffff}

Показываем три процесса, которые сильнее всего нагружают процессор. Первый окрашиваем оранжевым цветом.
Highest CPU:
${color ff9000}${top name 1} ${top cpu 1}%

Возвращаем цвет текста к белому
${color ffffff}${top name 2} ${top cpu 2}%
${top name 3} ${top cpu 3}%

Использование оперативной памяти
${color a1ccea}MEM usage:    $memperc%

Пишем количество занятой памяти и общее кол-во озу
${color ffffff}Used: $mem of $memmax

Рисуем полоску использования памяти высотой 3 и шириной 140
${membar 3,140}

Рисуем график использования памяти высотой 20 и шириной 140, закрашенный градиентом
${memgraph 20,140  000000 ffffff}

Показываем три процесса, которые используют памяти больше, чем другие. Самый прожорливый окрашиваем оранжевым цветом.
Highest MEM:
${color ff9000}${top_mem name 1} ${top_mem mem 1}%
${color ffffff}${top_mem name 2} ${top_mem mem 2}%
${top_mem name 3} ${top_mem mem 3}%

Выводим информацию по использованию свопа
SWAP usage: $swapperc% 
Used: $swap/$swapmax


Теперь переходим к мониторингу сетевых интерфейсов
${color a1ccea}Network usage:

Показываем исходящий трафик для интерфейса eth0. Если у вас интерфейс называется по-другому, измените eth0 на свое. Если у вас больше одного сетевого интерфейса, просто скопируйте следующие строчки и измените eth0 на свое.
${color ffffff}
Up: ${upspeed eth0}/s

График исходящего трафика
${upspeedgraph eth0 20,140  000000 ffffff}

Входящий трафик
Down: ${downspeed eth0}/s

График для входящего трафика
${downspeedgraph eth0 20,140  000000 ffffff}


Информация о файловых системах.
Тут показывается информация для разделов /, /home и /files Эти разделы используются на моем компьютере, поэтому измените параметры на нужные
${color a1ccea}File systems:
${color ffffff}

Сколько использовано на корневом разделе и сколько места всего
 / ${fs_used /}/${fs_size /}

Полоска для корневого раздела
${fs_bar 3,140 /}

То-же самое для /home и /files:
Home ${fs_used /home}/${fs_size /home}
${fs_bar 3,140 /home}
 /files ${fs_used /files}/${fs_size /files}
${fs_bar 3,140 /files}


На мониторинге температуры остановимся подробнее.
Чтобы следить за температурой чипсета материнской платы и температурой процессора, надо установить и настроить пакет lm_sensors. Как это делается, написано тут: Установка и настройка lm_sensors
Температуру жесткого диска можно смотреть утилитой hddtemp. Просто установите ее, никаких настроек не требуется. Единственная проблема - hddtemp использовать может только root. Но мы же не хотим каждый раз запускать conky от рута, поэтому надо разрешить запускать hddtemp от пользователя, без прав рута. В Gentoo hddtemp лежит по адресу /usr/sbin/hddtemp и, чтобы разрешить запускать ее от пользователя, надо выполнить от рута команду chmod a+s /usr/sbin/hddtemp. Если у вас в /usr/sbin/ ее нету, местоположение файла hddtemp можно узнать командой whereis hddtemp (от рута тоже). Дополнительная проблема в том, что если эта программа у вас обновится, то права надо будет изменить заново.
Температуру видеокарты, как мне известно, могут смотреть только владельцы Nvidia. Для этого, conky должен быть собран с флагом nvidia (в Gentoo). Во многих дистрибутивах он по умолчанию собирается с поддержкой nvidia.

Температура процессора. Данные берутся с lm_sensors. В моем случае за процессор в lm_sensors отвечает датчик temp1. У вас может быть по-другому.
Самый простой способ узнать, какой из датчиков за что отвечает, - записать данные с вывода lm_sensors, перезагрузиться и сравнить их с данными о температуре в BIOS
${color ffffff}CPU:             ${execi 2 sensors | grep temp1 | cut -c 15-16}°С

Температура сис. платы. У меня за нее отвечает temp2. Замените temp2 на другой датчик, если у вас по-другому
SYS:             ${execi 2 sensors | grep temp2 | cut -c 15-16}°С

Температура жестких дисков. Данные берутся с hddtemp. У меня устроства жестких дисков называются /dev/sda и /dev/sdb. Измените это на свое, если у вас по-другому.
/dev/SDA:        ${execi 2 /usr/sbin/hddtemp /dev/sda -q | awk '{print $3; }' | cut -c 1-2}°С
/dev/SDB:        ${execi 2 /usr/sbin/hddtemp /dev/sdb -q | awk '{print $3; }' | cut -c 1-2}°С

Температура видео-карты. Новые версии Conky поддерживают показ температуры с видеокарт Nvidia. Про ATI ничего не известно
Nvidia GPU:      ${nvidia temp}°С


Показ погоды в conky. Я не стал заморачиваться с RSS (он у меня как-то криво работал) и использованием отдельных скриптов, а сделал просто - с помощью wget каждые 600сек (10мин) с сайта гисметео скачивается маленькая (4кб) картинка и сохраняется под именем .conkyweather.gif. Затем она отображается в окне Conky. У меня используется ссылка для Тулы. Получить ссылку для вашего города вы можете по адресу http://informer.gismeteo.ru/ в разделе "графические информеры"
${color a1ccea}Weather:
${color ffffff}${execi 600 wget -O ~/.conkyweather.gif http://informer.gismeteo.ru/new/4392-13.GIF}

Картинка будет показываться по координатам 0,635 и будет обновляться раз в 300 сек.
${image ~/.conkyweather.gif -p 0,635 -f 300}

И еще кое-что. Чтобы картинка влезла в окно conky, его надо растянуть, сделав в 4-5 переносов строк






Вот так :) Это растянуло окно conky, чтобы картинка с погодой не уехала за край. Можно и более "правильным" способом, но так проще :)
( еще один способ отображения погоды - Скрипт для отображения погоды в Conky с gismeteo. )


Conky, настроенный таким образом будет выглядеть так:
myconky_1253254026.png

Если с вашим фоном рабочего стола белый текст видно плохо, замените везде ffffff на код другого цвета, а также замените цвет в строке default_color white.

Этот конфиг вы можете скачать тут.


Слегка сокращенный перевод официальной документации по Conky.

Опции конфигурации

TEXT : После этого весь текст будет отображен на экране

alignment : Определяет позицию на экране. Может быть top_left, top_right, top_middle, bottom_left, bottom_right, bottom_middle, middle_left или middle_right
default_color : Дефолтный цвет границ и текста
default_shade_color : Дефолтный цвет теней
double_buffer : Включите это, если Conky неприятно мигает
draw_shades : Включить тени
font : Указывает, какой шрифт использовать. Для определения имени шрифта используйте утилиту xfontsel
gap_x : отступ слева или справа
gap_y : отступ сверху или снизу
use_xft : Использовать шрифты Xft. Xft поддерживают антиальясинг.
xftfont : Какой xft шрифт использовать

Переменные

color (color) : Задает цвет последующего текста. Пример: ${color ffffff}
cpu (cpuN) : Использование процессора в процентах. Пример для одноядерной машины: ${cpu} Пример для многоядерной для первого ядра: ${cpu 1}
cpubar (cpuN) (height),(width) : Полоска загрузки процессора, где cpuN - номер ядра (указывать, если машина многоядерная), height - высота, width - ширина полоски. Пример: ${cpubar 3,100}
cpugraph (cpuN) (height),(width) : График загруженности процессора, где cpuN - номер ядра (указывать, если машина многоядерная), height - высота, width - ширина полоски. Пример: ${cpugraph 20,100}
curl url interval_in_minutes : Скачивает и показывает текстовые данные с указанного url. Пример: ${curl http://mydomain.com/test.txt 2}
downspeed (net) : Скорость скачки, где net - имя сетевого интерфейса. Пример: ${downspeed eth0}
downspeedgraph (net) : График скорости скачки, где net - имя сетевого интерфейса.
else : Логическое иначе
endif : Конец условия $if
execi interval commamd : Выполнение исполняемого файла и показ его вывода. Пример: ${execi 2 cat /home/myname/test.txt}
freq (n) : Частота процессора в МГц, где n - номер ядра (по дефолту 1)
fs_bar (height),(width) fs : Полоска, которая показывает, как используется файловая система. Пример: ${fs_bar3,100 /home}
fs_free (fs) : Кол-во свободного места файловой системы
fs_size (fs) : Размер файловой системы
fs_type (fs) : Тип файловой системы
fs_used (fs) : Количество использованного места файловой системы
if_empty (var) : Если указанная переменная пуста, показывает все, что идет после $if_empty и до $endif
if_existing file (string) : Если указанный файл существует, показывает все, что идет после $if_existing и до $endif
if_running (process) : Если указанный процесс запущен, то показывает все, что идет после $if_running и до $endif
image (-p x,y) (-f interval) : Показывает изображение. x и y - координаты, -f interval - частота обновления. Пример: ${image /path/to/image.png -p 10,100 -f 15}
kernel : Версия ядра
mem : Кол-во используемой памяти
membar (height),(width) : Полоска загруженности памяти
memfree : Кол-во свободной памяти
memgraph (height),(width) : График использоемой памяти
memmax : Общее кол-во памяти
nvidia : Для владельцев карт Nvidia. Пример для вывода температуры: ${nvidia temp}
shadecolor (color) : Цвет теней
swap : Кол-во использованного свопа
swapfree : Кол-во свободного свопа
swapmax : Общее кол-во свопа
time : Вывод времени
upspeed (net) : Скорость исходящего трафика, где net - сетевой интерфейс
upspeedgraph (net) (height),(width) : График по исходящему трафику
uptime : Аптайм



UPD: Скрипт для отображения погоды в Conky с gismeteo.

Итак, научим Conky выдирать данные о погоде из этого XML - http://informer.gismeteo.ru/getcode/xml.php?id=27612 . Вам нужно получить ссылку для своего города. Для Москвы это http://informer.gismeteo.ru/xml/27612_1.xml .

Теперь создайте файл conky-weather.sh с таким содержимым:
time=$(date +%H)

URL="http://informer.gismeteo.ru/xml/27719_1.xml"
EXEC="/usr/bin/curl -s"

a=`$EXEC $URL`

#температура
echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /../' | gawk '{ print "Темп.",$1,"°C" }'
#ветер
echo $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Ветер",($1+$2)/2,"м/с" }'
#давление
echo $a | tr "/>" "\n" | grep PRESSURE | sed -n 1p | sed -e 's/<PRESSURE //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Давл.",($1+$2)/2,"мм" }'
URL="http://informer.gismeteo.ru/xml/27719_1.xml" замените на ссылку для вашего города. Проверить работоспособность скрипта можно, выполнив его в терминале:
$ ./conky-weather.sh 
Темп. 14..16 °C
Ветер 3 м/с
Давл. 754 мм
Если все работает, то добавьте в ваш ~/.conkyrc следующие строки:
${color a1ccea}Weather:
${color ffffff}${execi 3600 /путь/до/скрипта/conky-weather.sh}
Вот и все. Выглядеть участок Conky с погодой будет примерно так:

погода в conky


UPDATE 2
Обновленный, по просьбам трудящихся, скрипт для показа погоды в Conky с учетом направления ветра:
time=$(date +%H)

URL="http://informer.gismeteo.ru/xml/27719_1.xml"
EXEC="/usr/bin/curl -s"

a=`$EXEC $URL`


#температура
echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /../' | gawk '{ print "Темп.",$1,"°C" }'

#ветер
WIND_DIRECTION=`echo -e $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "direction=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

WDN[0]="С"
WDN[1]="С-В"
WDN[2]="В"
WDN[3]="Ю-В"
WDN[4]="Ю"
WDN[5]="Ю-З"
WDN[6]="З"
WDN[7]="С-З"

WIND=`echo -ne $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Ветер",($1+$2)/2,"м/с"}'`

echo $WIND ${WDN[$WIND_DIRECTION]}

#давление
echo $a | tr "/>" "\n" | grep PRESSURE | sed -n 1p | sed -e 's/<PRESSURE //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Давл.",($1+$2)/2,"мм" }'


Скрипт аналогичен предыдущему. XML-информер гисметео дает о ветре такие данные:
WIND min="3" max="5" direction="3"
direction="0" - северный, direction="1" - северо-восточный и т.д. Скрипт направление ветра показывает сокращенно - С, Ю-В, С-З и т.д. Все должно быть сделано правильно, однако, когда я писал этот скрипт, гисметео говорил, что ветер в моем городе южный. При этом XML-информер сообщал, что направление ветра - "3" (цифра, а не буква), что должно соответствовать юго-восточному ветру. Не понятно, почему такие разногласия у них.
Вывод скрипта выглядит так:
$ ./weather.sh 
Темп. -11..-9 °C
Ветер 4 м/с Ю-В
Давл. 748 мм





Возможно, эти материалы Вас заинтересуют:


Рекомендовать эту страницу:

Комментарии:(76)

# анон April 25, 2010, 10:31 p.m.
отлично. спасибо

# lexer May 11, 2010, 6:29 p.m.
не подскажите ли Вы,но вот у меня почему-то погода не хочет отображатся..вставил в свой .conkyrc вот эти строки

ПОГОДА ${hr 2}

${color ffffff}${execi 600 wget -O ~/.conky/conkyweather.gif [url]http://informer.gismeteo.ru/new/4944-44.GIF[/url]}
${image ~/conky/conkyweather.gif -p 10 -f 300}]

# lexer May 11, 2010, 6:34 p.m.
а все,понял....))) пропустил точку в названии папки) хД

# username May 15, 2010, 10:54 a.m.
Спасибо, отлично расписали! Теперь на основе этой информации можно сделать вполне годный конфиг! Уважение %)

# peredelkin May 23, 2010, 5:42 p.m.
выводить температуру и прочее можно и так ${execi 1 cat /proc/acpi/thermal_zone/THRM/temperature} :D
вот только вывод будет в виде : :D
p.s. Данынй вариант вывода для процессора

# peredelkin May 23, 2010, 5:44 p.m.
небольшой конфуз с квадратными скобками
*виде - (ифя файла): (значение)

# peredelkin May 23, 2010, 6:52 p.m.
ну или нормальным способом Частота процессора: ${freq}Мгц
Температура процессора: ${acpitemp}°С
Настройки http://conky.sourceforge.net/config_settings.html
Переменные http://conky.sourceforge.net/variables.html

# Technarius June 19, 2010, 12:09 p.m.
Годная статья! Теперь у меня коньки отображают погоду! :)

# IT.Tux.Droid July 18, 2010, 10:27 p.m.
Очень хорошая статья, представленная в удобочитаемом виде! Ъ!

# Alex Sept. 5, 2010, 4:25 p.m.
Статья неплохая,
вопрос почему нет рсс ?

# Максим Oct. 4, 2010, 2:26 a.m.
Большое человеческое спасибо автору!

# Grel0m Oct. 9, 2010, 1:25 p.m.
Автору респект и уважуха!!!! Про информер погоды отдельное спасибо! Круто!

# zx\\'// Nov. 22, 2010, 4:40 p.m.
Крутая статья наконец доточил свои коньки

# Brainsburn Nov. 22, 2010, 6:51 p.m.
Спасибо за хорошие отзывы! Очень приятно, что время, затраченное на написание статьи, не прошло зря :)

# nSauk Dec. 24, 2010, 12:19 a.m.
Позволю себе заметить: у меня первое ядро cpu0, а не cpu1, cpu1 — второе.
Не знаю, в чём особенность, сомневаюсь, что автор ошибся, просто уточняю.
За статью спасибо (:

# Гость Dec. 26, 2010, 9:58 p.m.
Хорошая статья. Спасибо. Сайт отличный.

# Гость Feb. 11, 2011, 1:13 p.m.
респект автору, очень помогло

# Гость Feb. 19, 2011, 2 a.m.
Статья зачёт! Впервые смог понять вообще как настроить коньки. :)))
СПАСИБО ОГРОМНОЕ! :)))

# spyphy Feb. 23, 2011, 12:12 a.m.
выдает ошибку

$ ./conky-weather.sh
: command not found line 2:
: command not found line 5:
: is unknown -s

как исправить?

# spyphy Feb. 23, 2011, 1:23 a.m.
закрываю свой вопрос - видимо, дело было в интерпретаторе bash или типа того, теперь заработало

# spyphy Feb. 23, 2011, 1:41 a.m.
Идея с погодой мне понравилась. Единственное, на что хочу обратить внимание, так указан параметр HEAT - "комфорт - температура воздуха по ощущению одетого по сезону человека, выходящего на улицу" вместо реальной температуры воздуха. Ну это просто кому как привычней...

# mk March 11, 2011, 3:45 p.m.
Уважаемый, моё почтение и благодарность за проделанный труд и выложенную информацию. Это, пожалуй, самый простой и приемлемый, для меня по крайней мере, способ. Однако, нельзя-ли прикрутить к скрипту вывод направления ветра? В нашей местности оно имеет БОЛЬШОЕ влияние на погоду...

# Brainsburn March 11, 2011, 8:58 p.m.
Пожалуйста! Обновил скрипт для вывода погоды в Conky.

# mk March 12, 2011, 7:14 p.m.
Огромнейшее спасибо! Вот только нарисовалась проблема... В терминале по команде ~/weather1.sh погода выводится неизменно и в соответствии с примером вывода скрипта из вышеизложенной статьи. В коньках-же из всего блока, отвечающего за погоду
${font URW Gothic L:size=9:weight=normal}${color #4e85ca}За окном$color$font
${execi 3600 ~/weather1.sh}
выводится только заголовок "За окном"... :(

# Brainsburn March 13, 2011, 5:06 p.m.
Что-то не так с конфигом conky. Попробуйте вставить вызов скрипта в другое место или же оставить его и удалить все остальное (для проверки). Еще есть вероятность, что в момент запуска conky у вас был забит интернет канал и скрипт загрузить данные не успел, а повторно он выполняется через 3600 секунд.

# qlonik March 23, 2011, 9:36 p.m.
Спасибо Вам! Очень хорошая статья
Но вот проблема: если просмотреть содержимое xml файла, то можно узнать что самые новые данные о погоде - последние, а Ваш скрипт вытягивает первые. Подскажите, пожалуйста, как можно вытянуть последние данные?

# Brainsburn March 24, 2011, 5:04 p.m.
Первая часть - текущая погода, остальные - на будущее. Дело в том, что последняя часть показывает погоду, которая будет через 19 часов. Т.е. рано утром там будет погода на вечер, днем - на ночь. Мне кажется, это немного запутанно, поэтому я и взял первую часть, т.к. она показывает данные, близкие к текущим. Чтобы скрипт показывал 4ю часть, надо везде в скрипте sed -n 1p изменить на sed -n 4p

# F_og April 2, 2011, 3:43 a.m.
Привет, пытаюсь запустить пишет что нет такого файла или каталога, ругается на эту строчку:
EXEC="/usr/bin/curl -s"
Зашел в /usr/bin, но curl там нет(ни файла ни каталога).
Подскажи что с этим делать?

# F_og April 2, 2011, 4:08 a.m.
Проблему решил, но не совсем, теперь выдает:
./conkyweather.sh: строка 11: gawk: команда не найдена
./conkyweather.sh: строка 15: gawk: команда не найдена
./conkyweather.sh: строка 19: gawk: команда не найдена
Что можно сделать?

# F_og April 2, 2011, 4:13 a.m.
Все разобрался уже), спасибо за статью!!!!!!!!

# Kostilo May 2, 2011, 9:49 a.m.
Впервые настраиваю conky и наступил на те же грабли что и F_og
Привет, пытаюсь запустить пишет что нет такого файла или каталога, ругается на эту строчку:
EXEC="/usr/bin/curl -s"

Подскажите куда кидаться?(

# Kostilo May 2, 2011, 10:04 a.m.
Мда, и кто бы мог подумать что CURL - это прога которая ставится с помощю синаптика)))

# Brainsburn May 5, 2011, 4:19 p.m.
gawk: команда не найдена

Мда, и кто бы мог подумать что CURL - это прога которая ставится с помощю синаптика)))

Я думал, что gawk и curl есть во всех дистрибутивах по умолчанию, извиняйте :)

# ПроходилМимо May 8, 2011, 9:04 p.m.
для винта вот это точнее:
/dev/SDA: ${execi 2 /usr/sbin/hddtemp /dev/sda -n -q}°С
т.к. не всегда имя винта в одно слово, бывает и так
/dev/sdb: Hitachi HDS721010CLA332: 33°C
и тогда со старым вариантом выдается HD вместо температуры

# Brainsburn May 8, 2011, 10:13 p.m.
ПроходилМимо, никогда не видел таких названий устройств да еще и с пробелами. Можно узнать, что за дистрибутив так называет жесткие диски? А по поводу команды вы правы, как-то я не заметил опцию "-n"...

# ПроходилМимо May 8, 2011, 10:21 p.m.
У себя датчики температур сделал так:
CPU:			${execi 2 sensors | grep Core | cut -c 15-16 | tr -s "\n" " "}°С

SYS: ${execi 2 sensors | grep temp2 | cut -c 15-16}°С
SDA: ${hddtemp /dev/sda}°С
SDB: ${hddtemp /dev/sdb}°С
GPU: ${execi 2 aticonfig --adapter=0 --od-gettemperature | grep -E Temp.* | cut -c 37-38}°С

Показ температуры для всех ядер в одну строку ( у меня Intel, выборка по coretemp-isa). Далее hddtemp встроенная команда в conky, былоб не плохо модель винта писать. Последняя строка - температура на ATI(AMD) видеокарте, доступна после установки проприетарных дров. Чего еще не хватает мне - так это подсветка красным при превышении заданного порога....

# ПроходилМимо May 8, 2011, 10:26 p.m.
Можно узнать, что за дистрибутив так называет жесткие диски?

Боюсь дело не в дистрибутиве, в винте прошит серийник(или имя), а хддтемп читает его. Вот у меня оба хитачи выдаются по разному:
/dev/sda: HDS728080PLA380: 36°C
/dev/sdb: Hitachi HDS721010CLA332: 33°C

# Евгений June 1, 2011, 6:22 a.m.
Полезная статья, но у меня оказались проблемы с погодой:

1. При использовании изображения-информера - картинка в conky отображается и вроде бы все отлично, но она не обновляется. Т.е. в папке-то все отлично, изображение постоянно подгружается и актуальное, а вот на экран выводится всегда одна и та же (кэшируется видимо как-то). Обновляется только с перезапуском conky.

2. При использовании же "погодного" скрипта (чтение из xml) - в консоль все выводится на отлично (3 строки), а вот в conky отображается только первая возвращаемая скриптом строка.

Побороть так и не получилось. Есть какие-либо идеи?

# Дмитрий June 9, 2011, 6:49 p.m.
К вопросу о последнем посте. Конкретно вывод консоли таков (когда коньки запускаеш)

$ conky

Conky: desktop window (111) is root window
Conky: window type - override
Conky: drawing to created window (0x2c00001)
Conky: drawing to double buffer
/home/cynabr/bin/gismet.sh: 19: WDN[0]=С: not found
/home/cynabr/bin/gismet.sh: 20: WDN[1]=С-В: not found
/home/cynabr/bin/gismet.sh: 21: WDN[2]=В: not found
/home/cynabr/bin/gismet.sh: 22: WDN[3]=Ю-В: not found
/home/cynabr/bin/gismet.sh: 23: WDN[4]=Ю: not found
/home/cynabr/bin/gismet.sh: 24: WDN[5]=Ю-З: not found
/home/cynabr/bin/gismet.sh: 25: WDN[6]=З: not found
/home/cynabr/bin/gismet.sh: 26: WDN[7]=С-З: not found
/home/cynabr/bin/gismet.sh: 32: Bad substitution


При этом в коньках выводится только 1я строка, та которая с температурой.
А если запустить сам скрипт отдельно, то он отрабатывает нормально и пишет все 3 строчки. Подскажите куда копать?
Кстати первый из приведеных скриптов работает нормально и сразу все 3 строки в коньках выводит...

# Гость June 12, 2011, 1:44 p.m.
Странно, у меня все ок. Копать, наверно, надо в сторону "/home/cynabr/bin/gismet.sh: 19: WDN=С: not found". Почему-то командному интерпретатору не нравится команда
WDN[0]="С"

# Алексей June 22, 2011, 10:03 a.m.
Подскажите, в чём ошибка, попробовал дописать скрипт погоды, привинтив туда ещё и атмосферные явления:
#атмосферные явления

PHENOMENA_CLOUDINESS=`echo -e $a | tr "/>" "\n" | grep PHENOMENA | sed -n 3p | sed -e 's/<PHENOMENA //' |\
sed -e 's/"//g' | tr -d "cloudiness=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

WDNR[0]="ясно."
WDNR[1]="мало облочно."
WDNR[2]="облочно."
WDNR[3]="пасмурно."

PHENOMENA_PRECIPITATION=`echo -e $a | tr "/>" "\n" | grep PHENOMENA | sed -n 3p | sed -e 's/<PHENOMENA //' |\
sed -e 's/"//g' | tr -d "precipitation=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

WDNE[4]="дошть."
WDNE[5]="ливень."
WDNE[6]="снег."
WDNE[7]="снег."
WDNE[8]="гроза."
WDNE[9]="хуй его знает."
WDNE[10]="без осадков."

echo ${WDNR[$PHENOMENA_CLOUDINESS]} ${WDNE[$PHENOMENA_PRECIPITATION]}

но правильно выводится только тип осадков (это PHENOMENA_PRECIPITATION), а вот облачность всегда пишется "ясно.", где я здесь накосячил?

# Евгений July 23, 2011, 1:05 p.m.
Кстати, по поводу запуска conky при старте системы. Надеюсь кому-то поможет.

При простом указании команды conky в автоматически запускаемых приложениях - эффект прямо таки никакой. И сей факт в общем-то известен. Для нормального запуска необходимо делать небольшую оттяжку по времени. Т.е. команда должна выглядеть как:

sleep 20 && conky


но по сути, это тоже не помогает, правильнее всего явно указать выполнение команды через командную оболочку (SH либо Bash):

/bin/sh -c 'sleep 20 && conky'




ЗЫ. Пока сам не допер до этого - запускал руками. При этом ни один совет на различных форумах не помог.

# xeen Aug. 6, 2011, 7:25 p.m.
Исправлено (в преведущем комментарии выпали условия if then)
====

#!/bin/sh
#
#
#

time=$(date +%H)


URL="http://informer.gismeteo.ru/xml/27962_1.xml"
EXEC="/usr/local/bin/curl -s"

a=`$EXEC $URL`

echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /../' | gawk '{ print "Temp.",$1,"°C" }'

WIND_DIRECTION=`echo -e $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "direction=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

if
then
WINDN="N"
elif
then
WINDN="N-E"
elif
then
WINDN="E"
elif
then
WINDN="S-E"
elif
then
WINDN="S"
elif
then
WINDN="S-W"
elif
then
WINDN="W"
elif
then
WINDN="N-W"
fi


WIND=`echo -ne $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Wind",($1+$2)/2,"m/s"}'`

echo $WIND ${WDN} $WINDN

echo $a | tr "/>" "\n" | grep PRESSURE | sed -n 1p | sed -e 's/<PRESSURE //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Comp.",($1+$2)/2,"mm" }'

===

# Brainsburn Aug. 6, 2011, 7:47 p.m.
xeen, Если вы хотите использовать в тексте комментария специальные символы, например,
[
и
]
, используйте их внутри тега
 [code] [/code] 
, иначе они будут проглочены обработчиком BB-кодов.
В ближайшее время постараюсь исправить эту проблему.

# Anonimous Aug. 7, 2011, 3:18 p.m.
Евгений, Дмитрий, я добавил в начало скрипта #!/bin/bash, и всё заработало как надо

# xeen Aug. 9, 2011, 4:19 a.m.
ага...


#!/bin/sh
#
#
#

time=$(date +%H)


EXEC="/usr/local/bin/curl -s"

a=`$EXEC $URL`

temp=`echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /-/' | gawk '{ print $1"C" }'`

echo -n $temp" "

WIND_DIRECTION=`echo -ne $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "direction=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

if [ $WIND_DIRECTION -eq 0 ]
    then
	WINDN="С"
elif [ $WIND_DIRECTION -eq 1 ]
    then
	WINDN="СВ"
elif [ $WIND_DIRECTION -eq 2 ]
    then
	WINDN="В"
elif [ $WIND_DIRECTION -eq 3 ]
    then
	WINDN="ЮВ"
elif [ $WIND_DIRECTION -eq 4 ]
    then
	WINDN="Ю"
elif [ $WIND_DIRECTION -eq 5 ]
    then
	WINDN="ЮЗ"
elif [ $WIND_DIRECTION -eq 6 ]
    then
	WINDN="З"
elif [ $WIND_DIRECTION -eq 7 ]
    then
	WINDN="СЗ"
fi


WIND=`echo -ne $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print ($1+$2)/2"м/с"}'`

echo -n $WIND ${WDN} $WINDN

echo $a | tr "/>" "\n" | grep PRESSURE | sed -n 1p | sed -e 's/<PRESSURE //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "", ($1+$2)/2"мм" }'


# casual Aug. 12, 2011, 5:47 p.m.
за статью спасибо, очень доступно
вот только второй погодный скриптик (с направлением ветра) у меня не очень работает: при запуске из терминала все выдает правильно, а когда запускаешь коньки информацию о ветре не выдает совсем… Не подскажете в чем может быть проблема?

# Дмитрий Aug. 20, 2011, 9:46 p.m.
По поводу получения погоды с ГисМетео, плучение более подробных данных на сутки вперед с парсером ена perl описал тут: http://garuda.homeunix.net/cgi-bin/wiki/Conky [garuda.homeunix.net]

там-же скрипты для получения баланса в Мегафоне и Скайлинке

# thero Sept. 18, 2011, 12:48 p.m.
а подскажите, возможно ли совместить upspeedgraph и downspeedgraph по аналогии с DU Meter?

# thero Sept. 18, 2011, 1:01 p.m.

# Сергей Oct. 18, 2011, 5:43 p.m.
Недавно заметил (по индикации текущего времени) что Conky стал обновляться через 11-12 секунд, тогда как параметр update_interval установлен 1.0 …
Не подскажете, что может оказывать влияние на интервал обновления?

# Сергей Oct. 18, 2011, 7:51 p.m.
Извиняюсь, поспешил задать вопрос - разобрался. Дело в моём провайдере - при выполнении скриптов, которые обращаются к сети задержка есть, при запрете выполнения оных задержка исчезла.

# Сеня Nov. 2, 2011, 1:39 a.m.
Спасибо.

# ДМ Nov. 9, 2011, 6:51 p.m.
Хорошая статья. Ни разу коньками не пользовался и почти всё настроил.
Хотел бы спросить, как сделать вывод монохромной картинки? Например, выше в комментариях говорилось про баланс на Мегафоне и Скайлинке - как сделать вывод логотипа компании, а не названия?

# Гость Nov. 10, 2011, 8:10 a.m.
ДМ, если вы про отображение картинок, то все просто:
${image ~/имя-картинки.jpg -p 0,635 -f 0}

-p - координаты,-f - время обновления (для случаев, если картинка меняется со временем)

# Nikolay Jan. 21, 2012, 3:12 a.m.
Валютные котировки если надо кому:
wget "http://download.finance.yahoo.com/d/quotes.csv?s=USDRUB=X&f=snl1&e=.csv [download.finance.yahoo.com]“ -qO-

Акции сбербанка на ММВБ:
wget ”http://finance.yahoo.com/d/quotes.csv?s=SBER.ME&f=sl1 [finance.yahoo.com]" -qO-

# leo March 12, 2012, 5:16 a.m.


# Гость May 8, 2012, 3:17 p.m.
края текста ток у меня обрезаны?

# Гость Jan. 1, 2013, 8:46 p.m.
Для замены curl и gawk можно использовать ‘wget -q -O -’ и ‘awk’ соответственно.

# Thunderball1978 Feb. 21, 2013, 1:40 a.m.
Полезная статья про полезный виджет. Нашёл много полезного для себя. Единственно не смог настроить отображение свободного места на подключаемых носителях mmcblk0 и sdb. Использую в ноуте SD ридер и CF через адаптер cardbus.

# Гость March 28, 2013, 12:26 p.m.
Замечательная статья.
Спасибо автору.
Подскажите как на Gismeteo узнать свой город?
Спасибо.

# _Brainsburn March 29, 2013, 12:36 a.m.
На гисметео, похоже, снова все изменили. Честно говоря, я сам не в курсе, как узнать код города. Советую воспользоваться вот этим сервисом: http://www.meteoservice.ru/content/export.html
Выбираете там город и используете ссылку после “Местоположение сервиса:”. XML там полностью аналогичен гисметео, так что в скрипте нужно будет заменить только значение URL на новое. Т.е. вместо URL="http://informer.gismeteo.ru/xml/27719_1.xml" будет "http://xml.meteoservice.ru/export/gismeteo/point/177.xml"

# Гость March 29, 2013, 6:27 a.m.
Спасибо

# Евгений June 12, 2013, 4:05 p.m.
Большое спасибо автору! Коньки заточены!
Кому нужен код в гисметео - http://informer.gismeteo.ru/getcode/imginf.php?id=4368&view=1

# Андрей June 16, 2013, 2:42 p.m.
Как на Gismeteo узнать код города?
Перейти на страницу http://www.gismeteo.ru/catalog/russia/
Выбрать область и город.
После загрузки страницы в контекстном меню ищем “Просмотр кода страницы” или “Исходный код” или похожее, в разных браузерах по разному.
Поиск в исходном коде страницы: informer.gismeteo.ru
Для Мурманска будет http://informer.gismeteo.ru/slice2/xml/22113.xml
Искомый код города Мурманска - 22113
Вырезаем из полученного адреса “slice2/” получаем URL="http://informer.gismeteo.ru/xml/22113.xml"
Да, с аэропортами какая-то хрень. Пусто.

# Андрей June 21, 2013, 10:10 a.m.
Добавил город и атмосферные явления.
#! /bin/bash

time=$(date +%H)

URL="http://informer.gismeteo.ru/xml/50953.xml"
EXEC="/usr/bin/curl -s"

a=`$EXEC $URL`

# город и атмосферные явления
URL1="http://informer.gismeteo.ru/slice2/xml/50953.xml"
b=`$EXEC $URL1`

if echo $b | grep -q "," ; then
echo $b | cut -d "°" -f2 | tail -1 | sed 's/<.*/ /' | gawk '{ print "${color}"$3"${color gray}" }'
#echo $b | cut -d\, -f2 | tail -1 | cut -d\. -f1 | gawk '{ print "Явл. ",$1 }'
else
echo $b | cut -d "°" -f2 | tail -1 | sed 's/<.*/ /' | gawk '{ print "${color}"$2"${color gray}" }'
fi

#атмосферные явления
PHENOMENA_CLOUDINESS=`echo -e $a | tr '/>' '\n' | grep PHENOMENA | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print $1 }'`

CLOUD[0]="Ясно."
CLOUD[1]="Малооблочно."
CLOUD[2]="Облочно."
CLOUD[3]="Пасмурно."

PHENOMENA_PRECIPITATION=`echo -e $a | tr '/>' '\n' | grep PHENOMENA | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print $2 }'`

PREC[4]="Дождь."
PREC[5]="Ливень."
PREC[6]="Снег."
PREC[7]="Снег."
PREC[8]="Гроза."
PREC[9]="неизвестно."
PREC[10]="Без осадков."

echo ${CLOUD[$PHENOMENA_CLOUDINESS]} ${PREC[$PHENOMENA_PRECIPITATION]}

#температура
echo $a | tr '/>' '\n' | grep TEMPERATURE | sed -n 1p | tr -d [:upper:] | tr '<maxin="' ' ' | gawk '{ print "${color}Темп. ${color gray}",$2".."$1,"°C" }'

#ветер
WIND_DIRECTION=`echo -e $a | tr '/>' '\n' | grep WIND | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print $3 }'`

WDN[0]="С"
WDN[1]="С-В"
WDN[2]="В"
WDN[3]="Ю-В"
WDN[4]="Ю"
WDN[5]="Ю-З"
WDN[6]="З"
WDN[7]="С-З"

WIND=`echo -ne $a | tr '/>' '\n' | grep WIND | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print "${color}Ветер ${color gray}",($1+$2)/2,"м/с" }'`

echo $WIND ${WDN[$WIND_DIRECTION]}

#давление
echo $a | tr '/>' '\n' | grep PRESSURE | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print "${color}Давл. ${color gray}",($1+$2)/2,"мм" }'

# влажность
echo $a | tr '/>' '\n' | grep RELWET | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print "${color}Влаж. ${color gray}",($1+$2)/2,"%" }'

# vlitomsk Aug. 15, 2013, 11:13 a.m.
Спасибо за разжевывание conkyrc!
Только пришлось добавить #!/bin/bash в начало скрипта, собирающего погоду с gismeteo (без этого показывало только температуру, а в терминал выводило Bad substitution)

# Саня Aug. 31, 2013, 5:10 p.m.
Два дня все гуд работало. СПС Автору

А сегодня пишет:

Погода:
NULL

Что могло произойти? ничего в коде не менял…..

# Лфыр Dec. 17, 2013, 3:41 p.m.
Добвалю вывод температуры ATI-шной видеокарты:
${color1}Видеокарта: ${if_match “${execi 30 aticonfig –odgt | grep Sensor | awk ‘{print $5}’}” >= “60”}$color3$else$color2$endif${execi 30 aticonfig –odgt | grep Sensor | awk ‘{print $5}’}°С

P.S. дрова из репозитория ставил.

# Kash Dec. 17, 2013, 5:39 p.m.
Поправлюсь:
где “aticonfig –odgt” , там два знака “-”

# FG-08 Feb. 23, 2014, 3:48 a.m.
Информация о использовании процессора….. ${cpu1} …{cpu2}
ошибочка первый проц ${cpu cpu0} а второй естественно ${cpu cpu1}.

# sysadminiy July 26, 2015, 1:35 p.m.
Помогите с выводом погоды! Пожалуйста!

# Гость Aug. 26, 2015, 6:39 p.m.
Добавляю сетевой интерфейс wwan в готовые conky или изменяю, например, wlan на wwan - загрузка - выгрузка на отображаются.

# Андрей Sept. 20, 2015, 7:47 p.m.
Друзья поясните как включить в conky русский язык?

# Андрей Sept. 20, 2015, 7:51 p.m.
Друзья поясните как включить в conky русский язык?

# игорь Oct. 20, 2015, 5:22 p.m.
Подскажите параметр вывода названия видеокарты nvidia

Комментировать:

Гость, Вы можете оставить свой комментарий.

Стиль кода:
Имя
Сайт * не обязательное поле
Поставьте галку, если вы - бот
Поставьте галку, если вы - человек

Друзья! Убедительная просьба воздержаться от нецензурной лексики!



Справка:
Если вы хотите использовать в тексте комментария специальные символы, например, [ и ], используйте их внутри тега [code] [/code]
Вы можете использовать теги BBcode. Для оформления кода и подсветки синтаксиса используйте тег [code] или [code=название_языка], например, [code=python]
Ссылки вставляйте так: [url]zenux.ru[/url] или так: http://zenux.ru, но не так: zenux.ru
Текст сообщения должен быть в пределах 3000 символов.




Последние комментарии:

серега: линцкс гавно... >>>
Епт: Сука денис попов попошоп... >>>
nbg: cxcxc... >>>
Андрей: Гораздо проще указать часы в БИОС той временной зо... >>>
darkstar: не видели Вы динозавров… как раз в 2011 году... >>>