Материал из Wiki.X-news.org
Перейти к: навигация, поиск

conky (системный монитор)

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

background yes	 Запуск приложения в фоне (yes, no)
font -*-Terminus-*-*-*-*-12-*-*-*-*-*-*-*	 Шрифт для отображения текста
use_xft no	 Использовать сглаживание шрифтов (yes, no)
xftalpha 0.8	 Альфа уровень для XFT (значения от 0 до 1)
	 
gap_x 8	 Отступ по X координате в пикселях
gap_y 4	 Отступ по Y координате в пикселях
	 
alignment bottom_right	 Положение на экране (top,bottom,middle_left,right,middle)
	 
update_interval 5.0	 Интервал обновления данных в секундах
total_run_times 0	 К-во обновлений перед выходом
double_buffer yes	 Использовать двойной буфер (yes, no), устраняет мерцание
	 
draw_shades yes	 Рисовать тени (yes, no)
draw_outline no	 Рисовать контуры (yes, no)
draw_borders yes	 Рисовать границы (yes, no)
draw_graph_borders yes	 Рисовать границы для графиков (yes, no)
border_width 0	 Ширина границ в пикселях
	 
default_color white	 Цвет "по умолчанию"
default_shade_color black	 Цвет "по умолчанию" для теней
default_outline_color black	 Цвет "по умолчанию" для контуров
	 
no_buffers yes	 Испрользовать ли буфер в памяти (yes, no)
uppercase no	 Отображать текст только в верхнем регистре (yes, no)
	 
cpu_avg_samples 2	 ?
net_avg_samples 2	 ?
	 
override_utf8_locale yes	 Определить UTF8 локаль (yes, no)
use_spacer none	 Добавить просветы в отрисовке шрифтов (yes, no)
show_graph_scale no	 ?
show_graph_range no	 ?

Далее в конфигурационном файле идет секция TEXT, описывающая построчное отображение параметров на экране: TEXT

${color lightgrey}Uptime:${color #ddaa00} $uptime - ${color lightgrey}Processes:${color #ddaa00} $processes ${color grey}Running:${color #ddaa00} $running_processes ${color lightgrey}MAX Usage: ${color #ddaa00}PID:${top pid 1} CPU%:${top cpu 1} Name: ${top name 1} ${color lightgrey}CPU Usage:${color lightgreen} $cpu% ${color #cc2222}${cpubar} ${color red}${cpugraph 0000ff 00ff00} ${color lightgrey}SWP Usage:$color $swapperc% ${swapbar} ${color lightgrey}RAM Usage:$color $memperc% ${membar} ${color lightgrey}BAT Charge: $apm_battery_life ${color green}${execbar sysctl hw.acpi.battery.life | cut -d' ' -f2} ${color lightgrey}/USR free: ${color lightgreen}${fs_free /usr}$color (${fs_size /usr}) ${color lightgreen}${fs_bar /usr}

Для того, чтобы получить шкалу уровня заряда в ноутбуке, пришлось запрашивать sysctl таким образом чтобы получить уровень заряда в процентах: sysctl hw.acpi.battery.life | cut -d' ' -f2

Фактически conky вызывает эту команду и получает цифру на основании которой рисует шкалу заряда батареи ноутбука. На обычном компьютере, где данной системной переменной не будет (т.к. нет батареи), строку "${color lightgrey}BAT Charge: $apm_battery_life ${color green}${execbar sysctl hw.acpi.battery.life | cut -d' ' -f2}" следует удалить, иначе в терминал будут выведены сообщения об ошибках несуществующей переменной.

В итоге у нас получился следующий конфигурационный файл:

background yes font -*-Terminus-*-*-*-*-12-*-*-*-*-*-*-* use_xft no xftalpha 0.8

gap_x 8 gap_y 4

alignment bottom_right

update_interval 5.0 total_run_times 0 double_buffer yes

draw_shades yes draw_outline no draw_borders yes draw_graph_borders yes border_width 0

default_color white default_shade_color black default_outline_color black

no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 2 
override_utf8_locale yes
use_spacer none
show_graph_scale no
show_graph_range no

TEXT
${color lightgrey}Uptime:${color #ddaa00} $uptime - ${color lightgrey}Processes:${color #ddaa00} $processes  ${color grey}Running:${color #ddaa00}    $running_processes
${color lightgrey}MAX Usage: ${color #ddaa00}PID:${top pid 1}    CPU%:${top cpu 1}     Name: ${top name 1}
${color lightgrey}CPU Usage:${color lightgreen} $cpu% ${color #cc2222}${cpubar}
${color red}${cpugraph 0000ff 00ff00}
${color lightgrey}SWP Usage:$color $swapperc% ${swapbar}
${color lightgrey}RAM Usage:$color $memperc% ${membar}
${color lightgrey}BAT Charge: $apm_battery_life ${color green}${execbar sysctl hw.acpi.battery.life | cut -d' ' -f2}
${color lightgrey}/USR free: ${color lightgreen}${fs_free /usr}$color (${fs_size /usr}) ${color lightgreen}${fs_bar /usr}

Запустив conky, на экране мы увидим такой вот небольшой и удобный мониторинг системы:

Conky.png


Решение проблемы сдвига индикатора

При использовании стандартной строки в конфигурационном файле:

${color grey}CPU1 Usage:$color ${cpu cpu1}% ${cpubar cpu1 4} 

Возникает следующая проблема: шкала использования процессора начинает рисоваться отступая один пробел после знака %. И когда процессор занят на 5%, а потом на 100% - отчетливо видно, что начало шкалы сдвигается на 2 пробела правее, из-за того, что добавилось 2 знакоместа в графе %-ного использования процессора. Чтобы это обойти я модифицировал строку следующим образом:

${color grey}CPU1 Usage:$color ${cpu cpu1}% ${goto 120} ${cpubar cpu1 4} 

Параметр "goto" отступает 120 точек и начинает рисовать шкалу, независимо от того, сколько знакомест занимают предыдущие показания.