10 jun 2008

Conky: Monitoriza tu ordenador en Linux

En Linux existen varios programas que te permiten conocer el estado de tu ordenador en "tiempo real", como SuperKaramba (para KDE) o el que comentaremos en este artículo, Conky, (disponible para todos los escritorios que utilicen el servidor X) y es muy liviano, no utiliza apenas recursos (depende de la complejidad del archivo de configuración) por lo que es ideal para todo tipo de equipos.

Este es el aspecto que tiene Conky en mi ordenador con Ubuntu Linux 8.04 "Hardy" (escritorio de 1680x1050 pixels). Por un lado me muestra el porcentaje de uso de memoria, CPU (dual), disco duro, etc tanto gráficamente como con su valor numérico, lo que lo hace muy útil sin llegar a estorbar.
Le he puesto el blanco de color para contrastar con el fondo, que me gusta más bien oscuro. No obstante BasaBuru ha comentado el tema de los colores en su Blog.


Mi archivo de configuración es el siguiente, yo cogí uno que vi y lo modifiqué un poco a mi gusto; podéis modificar el vuestro una vez instalado Conky con el siguiente comando:

gedit /home/tunombreusuario/.conkyrc (reemplaza tunombreusuario por el tuyo)
Si lo quieres utilizar y cambiar alguna cosa lo he traducido (sin pensarlo demasiado) y comentado los parámetros. Las líneas que comienzan por # se ignoran; se utiliza para comentarios o desactivar opciones en algunos casos.


# configuracion Conky


# Establecer a yes si quieres que se clone en el fondo de pantalla
background no


# Fuente X si Xft esta desactivado, puedes seleccionar una con el programa xfontsel
#font 5x7
#font 6x10
#font 7x13
#font 8x13
#font 9x15
#font *mintsmild.se*
#font -*-*-*-*-*-*-34-*-*-*-*-*-*-*




# Utilizar Xft?
use_xft yes


# Fuente Xft cuando Xft está activado
#xftfont Bitstream Vera Sans Mono:size=8
xftfont Terminus:size=8


# Texto alpha utilizando Xft
xftalpha 0.8


# ¿Mostrar todo en la consola?
out_to_console no


# Cola para el correo
#mail_spool $MAIL


# Tiempo de actualización en segundos
update_interval 30


# Numero de veces que Conky se actualizará antes de cerrarse.
# Establecer en cero para infinito.
total_run_times 0


# Crea tu propia ventana en lugar de utilizar el escritorio (requerido en nautilus)
own_window no


# Utilizar bufer doble (reduce parpadeo; puede que no funcione para todos)
double_buffer no


# Tamaño mínimo del área de texto
minimum_size 1000 5


# ¿Dibujar sombras?
draw_shades yes


# ¿Dibujar contornos?
draw_outline no


# ¿Dibujar bordes alrededor del texto?
draw_borders no


# ¿Bordes a puntos?
stippled_borders 8


# Margenes a bordes
border_margin 4


# Anchura de bordes
border_width 1


# Colores por defecto y colores de bordes
default_color white
default_shade_color black
default_outline_color white


# Alineación del texto; los valores no utilizados están comentados
alignment top_left
#alignment top_right
#alignment bottom_left
#alignment bottom_right


# Espacio vacio entre bordes de pantalla y el texto de Conky,
# lo mismo que si se pasa -x en la línea de comandos
# Utiliza esto para situar el gráfico en la pantalla;
# gap_x es la separación desde el lado izquierdo en pixels
# gap_y es desde la parte superior.
gap_x 1100
gap_y 50


# ¿Quitar la memoria usada como cache de la memoria utilizada?
# Nota: Linux aprovecha toda la memoria utilizando la libre como cache
# de disco duro, por lo que si este parámetro se indica en no aparecerá
# siempre el 99,9% utilizada.
no_buffers yes


# Establecer en yes si quieres todo el texto en mayusculas
uppercase no


# numero de pruebas de CPU para promediar
# establecer en 1 para desactivar (2 por defecto)
cpu_avg_samples 2


# numero de pruebas de red para promediar
# establecer en 1 para desactivar (2 por defecto)
net_avg_samples 2


# ¿Forzar UTF8? Aclarar que el soporte para UTF8 requeria XFT
# Esto es util si queremos que nos acepte carácteres especiales (p.e. acentos)
override_utf8_locale no


# ¿Agregar espacios para evitar que se muevan las cosas? Esto afecta solo a ciertos objetos.
use_spacer yes
#Nota: No funciona en conky 1.2 =(


# mldonkey_hostname: Hostname para mldonkey, por defecto localhost
# mldonkey_port: Puerto Mldonkey, 4001 por defecto
# mldonkey_login: Mldonkey login, por defecto ninguno
# mldonkey_password: Contraseña Mldonkey, por defecto ninguna




# Posibles variables a utilizar:
#
# Descripcion de variables y argumentos


# addr (interface): Dirección IP de una conexion de red.
# acpiacadapter: Estado ACPI de un adaptador AC.
# acpifan: Estado del ventilador ACPI.
# acpitemp: Temperatura ACPI (no funciona en todos los casos; consultar hwmon).
# adt746xcpu: Temperatura CPU del therm_adt746x
# adt746xfan: Velocidad del ventilador del therm_adt746x .
# alignr (N) : Justificar texto a la derecha, con N espacios.
# alignc: Alinear texto al centro.
# battery (num): Capacidad restante en bateria ACPI o APM.
# El numero de bateria ACPI se puede dar como un argumento
# (por defecto BAT0).
# buffers: Cantidad de memoria dedicada a bufer
# cached: Cantidad de memoria dedicada a cache
# color (color): Cambiar color de trazo a color indicado
# cpu : Uso de CPU en porcentaje
# cpubar (height): Barra que muestra el uso de CPU,
# height es la altura de la barra en pixels
# cpugraph (height),(width) (gradient colour 1) (gradient colour 2):
# Gráfica de uso de la CPU, con colores opcionales en hex
# menos el #.
# downspeed net: Velocidad de descarga en kilobytes
# downspeedf net: Velocidad de descarga en kilobytes con un
# decimal
# downspeedgraph net (height),(width) (gradient colour 1) (gradient colour 2):
# Grafico de velocidad de descarga, colores definidos en hex, menos el #
# exec shell command: Ejecuta un comando del shell y muestra
# la salida en conky. Precaucion: esta utiliza mas recursos que this
# otras variables. Recomendaria habilidades programando en C y
# publicar un parche :-).
# execbar shell command: Lo mismo que exec, excepto que si lo primero
# que devuelve es un valor entre 0-100, se usara ese numero para una barra.
# La medida de la barra actualmente es fija,
# pero podria cambiar en el futuro.
# execgraph shell command: Lo mismo que execbar, pero los valores
# son graficos.
# execi interval, shell command:
# Lo mismo que exec pero con un intervalo especifico.
# El intervalo no puede ser menor que update_interval en la configuración.
# font font: Especifica una fuente diferente. Solo toma efecto en una linea.
# fs_bar (height), (fs): Barra que muestra cuanto espacio se utiliza en
# un sistema de archivos. height es la altura en pixels. fs es cualquier
# archivo en ese sistema de archivos.
# fs_free (fs): Espacio libre disponible a los usuarios de en un sistema
# de archivos.
# fs_free_perc (fs): Porcentaje de espacio libre en un sistema de
# archivos disponible para usuarios.
# fs_size (fs): Tamaño del sistema de archivos
# fs_used (fs): Espacio ocupado de un sistema de archivos
# hr (height) : Linea horizontal, height es la altura en pixels
# i2c (dev), type, n: Sensor I2C del sysfs (Linux 2.6). dev
# se puede omitir si solo hay un elemento I2C. type es o in (o vol)
# que indica voltaje, fan indica ventilador o temp/tempf (el primero
# en grados Celsius, el segundo en Farenheit indicando
# temperatura. n indica el numero de sensores. Ver
# /sys/bus/i2c/devices/ en tu computadora.
# if_running (process): Si la tarea PROCESS esta corriendo, muestra
# todo entre if_running y el correspondiente final de linea.
# if_existing (file) : Si el archivo FILE existe, muestra todo entre
# if_existing y el correspondiente final de linea.
# if_mounted (mountpoint): Si el punto de montaje MOUNTPOINT
# esta montado, muestra todo entre if_mounted y el correspondiente
# final de linea.
# else: Texto a mostrar si lo anterior no se cumple
# kernel: Version de Kernel Linux
# linkstatus (interface): Obtener el estado de la conexion en conexiones
# inalambricas.
# loadavg (1), (2), (3): Carga media del sistema; 1 para pasado 1 minuto,
# 2 para pasados 2 minutos y 3 para pasados 15 minutos.
# machine: Tipo de maquina, i686 por ejemplo.
# mails: Contador de correo en cola. Puedes usar programas como
# fetchmail para coger correos de algun servidor utilizando tu
# protocolo favorito. Ver tambien new_mails.
# mem: Cantidad de memoria en uso.
# membar (height): Barra que muestra la memoria en uso
# memmax: Cantidad de memoria total
# memperc: Porcentaje de memoria en uso
#
# metar_ob_time
# metar_temp
# metar_tempf: Temperatura en Farenheit
# metar_windchill
# metar_dew_point: Hay unos cuantos como estos
# metar_rh and: Son auto descriptivos
# metar_windspeed
# metar_winddir
# metar_swinddir
# metar_cloud
# metar_u2d_time
#
# ml_upload_counter: Mb totales subidos en la sesion (Mldonkey)
# ml_download_counter: Mb totales descargados en la sesion
# ml_nshared_files: Numero de archivos compartidos
# ml_shared_counter: Mb compartidos totales de la sesion, inexacto
# en algunas versiones de Mldonkey
# ml_tcp_upload_rate: Ratio de subida tcp en kb/s
# ml_tcp_download_rate: Ratio de descarga tcp en kb/s
# ml_udp_upload_rate: Ratio de subida udp en kb/s
# ml_udp_download_rate: Ratio de subida udp en kb/s
# ml_ndownloaded_files: Numero de archivos completados
# ml_ndownloading_files: Numero de archivos en descarga
#
# mpd_artist: Artista de la cancion MPD actual
# (se debe activar antes de compilar y crear el ejecutable Conky)
# mpd_album: Album de la cancion MPD actual
# mpd_bar (height): Barrra del progreso de MPD
# mpd_bitrate: Ratio de bits de la cancion actual (calidad)
# mpd_status: Si esta reproduciendo, parado, etc
# mpd_title: Titulo de la cancion MPD actual
# mpd_vol: Volumen de MPD
# mpd_elapsed: Tiempo transcurrido de la cancion actual
# mpd_length: Duracion de la cancion
# mpd_percent: Porcentaje de avance de la cancion
# new_mails: Contador de correo no leido en la cola.
# nodename: Nombre de host
# outlinecolor (color): Cambiar el color de la linea
# pre_exec shell command: Ejecuta un comando del shell una vez antes
# de que conky haga nada y empiece a mostrar texto.
# processes: Procesos totales (latentes y en marcha)
# running_processes: Procesos en marcha (no latentes),
# requiere Linux 2.6.
# shadecolor (color): Cambiar color del sombreado
# stippled_hr (space): Linea horizontal a puntos
# swapbar (height): Barra que muestra la cantidad de intercambio en uso
# swap: Cantidad de archivo de intercambio en uso
# swapmax: Cantidad total del intercambio
# swapperc: Porcentaje de intercambio en uso
# sysname: Nombre del sistema, Linux por ejemplo
# offset pixels: Mover texto por N pixels
# tail logfile, lines (interval): Muestra las ultimas lineas del texto indicado
# Si el numero (interval) no se indica, Conky asume el doble del
# numero de lineas de Conky. Maximo 30 lineas.
# time (format): Tiempo local, ver man strftime para mas informacion
# acerca del formato.
# totaldown: Descarga total de la red, a 4 GB se desborda en
# Linux con arquitecturas de 32-bit y no parece haber una forma
# de saber cuantas veces lo ha hecho antes de que conky
# se haya iniciado.
# top type, num: Muestra lineas, donde top indica el
# numero de proceso que mas CPU toma, ordenados por num.
# type puede ser "name", "pid", "cpu" o "mem".
# Se pueden mostrar un maximo de 10 procesos.
# top_mem type, num: Lo mismo que top, aunque ordenados por uso
# de memoria en lugar de cpu
# totalup net: Subida total, este valor tambien se puede desbordar
# updates Numero de actualizaciones realizadas (para depuracion)
# upspeed net: Velocidad de subida en kilobytes
# upspeedf net: Velocidad de subida en kilobytes con un decimal
# upspeedgraph net (height),(width) (gradient colour 1) (gradient colour 2):
# Velocidad de subida, colores definidos en hex, menos el #.
# uptime: Tiempo transcurrido desde el encendido.
# uptime_short: Tiempo de encendido en formato corto
#
# seti_prog: Progreso actual de Seti@home.
# seti_progbar (height): Barra del progreso actual de Seti@home
# seti_credit: Credito total del usuario de Seti@home


# Las variables se dan en el formato $variable o bien como ${variable}.
# El ultimo permite caracteres despues de la variable y debe utilizarse
# cuando es necesario dar un argumento.

# El contenido despues de 'TEXT' se formateara en la pantalla

TEXT

${offset 240}${color slate grey}${time %a, } ${color }${time %e %B %G}
${offset 240}${color slate grey}${time %Z, }${color }${time %H:%M:%S}
${offset 240}${color slate grey}UpTime: ${color }$uptime
${offset 240}${color slate grey}Kernel:${color }$kernel
${offset 240}${color slate grey}CPU 1:${color } ${cpu cpu1}% Temp: ${hwmon 0 temp 1} C
${offset 240}${cpugraph 20,130 000000 ffffff}
${offset 240}${color slate grey}CPU 2:${color } ${cpu cpu2}% Temp: ${hwmon 0 temp 1} C
${offset 240}${cpugraph 20,130 000000 ffffff}
${offset 240}${color slate grey}Carga: ${color }$loadavg
${offset 240}${color slate grey}Procesos: ${color }$processes
${offset 240}${color slate grey}Corriendo: ${color }$running_processes

${offset 240}${color slate grey}Uso CPU
${offset 240}${color lightgrey}NOMBRE PID CPU% MEM%
${offset 240}${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${offset 240}${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${offset 240}${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${offset 240}${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}

${offset 240}${color slate grey}Uso MEM:
${offset 240}${color #ddaa00} ${top_mem name 1}${top_mem mem 1}
${offset 240}${color lightgrey} ${top_mem name 2}${top_mem mem 2}
${offset 240}${color lightgrey} ${top_mem name 3}${top_mem mem 3}
${offset 240}${color lightgrey} ${top_mem name 4}${top_mem mem 4}

${offset 240}${color slate grey}MEMORIA: ${color } $memperc% $mem/$memmax
${offset 240}${membar 3,100}
${offset 240}${color slate grey}INTERCAMBIO: ${color }$swapperc% $swap/$swapmax
${offset 240}${swapbar 3,100}

${offset 240}${color slate grey}HD 1: ${color }${fs_free /}/${fs_size /}
${offset 240}${fs_bar 3,100 /}
${offset 240}${color slate grey}HD 2: ${color }${fs_free /media/disk}/${fs_size /media/disk}
${offset 240}${fs_bar 3,100 /media/disk}
${offset 240}${color slate grey}RED:
${offset 240}${color}Up: ${color }${upspeed eth0} k/s
${offset 240}${upspeedgraph eth0 20,130 000000 ffffff}
${offset 240}${color}Down: ${color }${downspeed eth0}k/s${color}
${offset 240}${downspeedgraph eth0 20,130 000000 ffffff}

Obteniendo la temperatura de los procesadores
Gracias a este hilo en los foros de Arch Linux al fin conseguí que el Conky me mostrara la temperatura del sensor de mi procesador (Athlon Dual Core X2 64), debemos comprobar /sys/class/hwmon para conocer qué parámetros utilizar:


${hwmon <#>}
La variable hwmon es similar a i2c para los que no tengan valores en /sys/bus/i2c/devices/.


No obstante, si queréis entrar en detalle en la página de Conky tenéis toda la información necesaria:


Acerca de Ubuntu 8.04 "Hardy" LTS

Estoy muy gratamente sorprendido por esta distribución; anteriormente era usuario de Kubuntu (lo mismo pero con escritorio KDE) y se notaba que no es la distribución principal de Canonical, son muy pocos los usuarios de Kubuntu y está muy poco pulida; los bugs y malfuncionamientos estaban a la orden del día.
En cambio con Ubuntu todo está diseñado con la sencillez y usabilidad como principios (utiliza el escritorio Gnome); el ordenador es mas fácil de usar que antes, no está sobrecargado de opciones y lo mejor de todo es que puedo seguir disfrutando de mis aplicaciones KDE favoritas como K3B (grabar CD/DVD) gracias a la compatibilidad de los escritorios Gnome y KDE.
Los códecs de descargan automáticamente cuando se requieren, puedes utilizar controladores propietarios para la tarjeta gráfica para disfrutar del escritorio 3D y se encargan de mantener todos los paquetes actualizados (incluso los propietarios); no en vano esta versión es LTS por lo que tiene soporte durante 3 años (5 para la versión para servidores).

Recomendado para ordenadores a partir de Pentium II con 256 MB de RAM que estén cansados de Windows y sus problemas.

10 comentarios:

  1. Hola,

    yo para monitorizar el estado de la máquina utilizo un applet para la barra de tareas de gnome, así siempre tengo la información a la vista sin tener que minimizar todas las ventanas.
    Respecto a Ubuntu y Kubuntu siempre he probado la primera, y en alguna versión anterior también me instalé el KDE, pero al final no me terminó de convencer. Aunque eso sí, igual que tú, tengo instaladas las librerías básicas de KDE porque no podría vivir sin K3B :-P.

    Saludos, Iván.

    ResponderEliminar
  2. Una idea estupenda Iván. Soy nuevo con gnome (no me gustaba por su simplicidad, pero la verdad es que es lo mejor si no quieres trastear con el escritorio y que el ordenador "trabaje por ti") y aunque los he visto en pantallazos de otros no he llegado a probar los applets aún; gracias por tu interesante aportación.

    ResponderEliminar
  3. YO estoy ahora con GNOME y es un poco lo que tú dices: Exaspera un poco ir al panel de preferencias y ver que apenas puedes cambiar nada y que te tienes que quedar con todo por defecto. También echo de menos el Konqueror sobre el Nautilus, pero bueno, supongo que es cosa de acostumbrarme.

    Por cierto, chulísimo el "conky". ¡Tengo que probarlo siguiendo tus indicaciones!

    Gracias

    ResponderEliminar
  4. Un apunte más. El applet que estoy usando se llama GNOME Sensors Applet y se puede descargar desde Sourceforge.

    No puedo hablar con todo el conocimiento porque hace mucho que no trabajo con KDE como escritorio, pero por multitud de sitios se ven capturas de escritorios con Ubuntu que están muy personalizados: Awn como dock, gdesklets,... no sé si llega al nivel de kde, pero la verdad es que están muy currados.

    Saludos, Iván.

    ResponderEliminar
  5. SuperCoco, si, el Conky está genial. Voy a probar los applets que comenta Iván, pero seguro que utilizan más procesador, lo que no es ecológico ni económico ;-).
    No quiero entrar en guerras de escritorios, al final todo es acostumbrarse, y aunque le faltan características que opino son imprescindibles (como poder arrastrar un icono de los menús al escritorio y que se te cree un enlace sin tener que pulsar ninguna tecla...) es lo mejor si te quieres centrar en otras cosas tanto o más importantes, como los programas.
    Iván, gracias por el apunte, la verdad es que tiene buena pinta (y lo de saber la temperatura de la gráfica Nvidia es la caña).
    Kde es mucho más configurable, tal vez demasiado, pero como dices he visto Gnomes muy logrados y funcionales, al fin y al cabo se trata de usabilidad.

    ResponderEliminar
  6. Una pregunta... se puede ampliar la altura de la "ventana" de conky? es que aún tengo espacio en la pantalla pero en conky no, cual es la variable para aumentar la altura? (si la hay xD).

    gracias y un saludo

    ResponderEliminar
  7. Con GAP_X y GAP_Y se sitúa en pantalla, y en cuanto a la altura, depende de lo que metas en medio, fíjate en cómo está el texto de la configuración (donde no viene # por delante, ya que este símbolo es para los comentarios), y fíjate en cómo se ve.
    Lo mejor es que leas bien el texto y la documentación disponible.

    ResponderEliminar
  8. Así es como lo tengo, esas dos variables que dices ya las toqué antes, y solo modifican la posición, no la altura ni anchura (hasta probé de modificar, descomentándolo, al "#maximum_height" y nada...)

    # Use Xft?
    use_xft yes
    xftfont Verdana:size=9
    xftalpha 0.8
    text_buffer_size 2048

    # Update interval in seconds
    update_interval 1

    # This is the number of times Conky will update before quitting.
    # Set to zero to run forever.
    total_run_times 0

    # Create own window instead of using desktop (required in nautilus)
    own_window yes
    own_window_transparent yes
    own_window_type override
    #own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

    # Use double buffering (reduces flicker, may not work for everyone)
    double_buffer yes

    # Minimum size of text area
    minimum_size 180 0
    #maximum_width 200
    #maximum_height 200

    # Draw shades?
    draw_shades no

    # Draw outlines?
    draw_outline no

    # Draw borders around text
    draw_borders no

    # Stippled borders?
    stippled_borders 0

    # border margins
    border_margin 5

    # border width
    border_width 1

    # Default colors and also border colors
    default_color white
    #default_shade_color black
    #default_outline_color white
    own_window_colour white

    # Text alignment, other possible values are commented
    #alignment top_left
    alignment top_right
    #alignment bottom_left
    #alignment bottom_right

    # Gap between borders of screen and text
    # same thing as passing -x at command line
    gap_x 35
    gap_y 50

    # Subtract file system buffers from used memory?
    no_buffers yes

    # set to yes if you want all text to be in uppercase
    uppercase no

    # number of cpu samples to average
    # set to 1 to disable averaging
    cpu_avg_samples 2

    # number of net samples to average
    # set to 1 to disable averaging
    net_avg_samples 2

    # Force UTF8? note that UTF8 support required XFT
    override_utf8_locale yes

    # Add spaces to keep things from moving about? This only affects certain objects.
    use_spacer none

    Aún así muchas gracias por comentar ;).

    ResponderEliminar
  9. Solucionado... resulta que le faltaba un espacio (intro) al final del archivo de configuración... una cosa tan simple después de horas probando y probando xD

    ResponderEliminar
  10. No entendí la pregunta; al fin y al cabo la anchura y altura dependen del número de líneas de la config y el tipo de texto ;-), gracias por compartir con nosotros tus experimentos.

    ResponderEliminar

Puede dejar su comentario, que tratará de ser moderado en los días siguientes. En caso de ser algo importante/urgente, por favor utilicen el formulario de arriba a la derecha para contactar.