Il est souvent utile d'avoir une vue synthétique sur les variables du système : utilisation CPU, mémoire, swap, disques, réseau, ... Les "desktop managers" proposent souvent d'ajouter des wingets dans les barre de menu ou de tâches (le fameux moniteur système de Gnome) mais c'est loin d'être une solution complète.
Conky permet lui, la surveillance de pratiquement toutes les variables du système (et même plus), sous forme textuelle ou de petits graphiques, en utilisant sa propre fenêtre ou en arrière-plan sur le bureau.
On touche là à la geekitude la plus complète avec LA liste de messages totalement abscons qui défile sur tout écran de l'informaticien normalement constitué dans la vision hollywoodien.
Conky peut s'interfacer avec une multitude de programmes comme audacious ou xmms (lecteurs de fichiers musicaux). La tentation est grande d'ajouter tous les USEs ... mais cela ajoutera des programmes peut être inutile à notre système et alourdira le fonctionnement de conky. De toutes ces options, j'ai décidé de ne conserver que :
Pour lancer conky au démarrage, j'ai créé le fichier ~/.config/autostart/conky.desktop comme suit :
[Desktop Entry]
Type=Application
Name=conky
Exec=conky
NoDisplay=true
La configuration se fait par le fichier .conkyrc qu'il cherche dans le home de l'utilisateur courant (ce qui fait que par la même, chaque utilisateur a sa propre configuration). Comme tout programme puissant, elle peut être un peu ardu et il faut savoir chercher sur internet et faire quelques essais avant d'avoir le résultat que l'on cherche.
On notera que conky est suffisamment fin pour charger automatiquement une nouvelle configuration lorsque le fichier .conkyrc ou l'un des fichiers qu'il inclut change (pas besoin de faire un stop/start pour activer les changements).
Je ne vais pas refaire la documentation et il y a de très bon tutoriaux sur le net. Je ne vais pas décrire ici que les point qui m'ont paru important.
Si on utilise un desktop manager tel que Gnome, KDE ou encore à travers PCManFM, il se peut que les infos de conky ne s'affichent pas. Probablement, on a utilisé l'option own_window_type desktop.
Le problème est que le vrai fond d'écran (fenêtre root) est entièrement recouverte par une autre fenêtre leurs permettant d'afficher des icônes. Pour obtenir le même résultat, la configuration doit être la suivante :
own_window_type normal
Conky utilisera sa propre fenêtre.
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent yes
Elle sera transparente.
La température, la vitesse des ventilateurs, les tensions ... des informations qui permettent de détecter des défaillances avant de griller son ordinateur. Ces informations seront disponibles dans le kernel après avoir
Pour intégrer ces informations dans conky, j'ai souvent vu des exec de la commandes sensors suivit de plein de awk et autre cut pour extraire les données. C'est franchement une très mauvaise idée, car plein de nouveaux processus seront lancés à chaque rafraîchissement : pas très bon pour les perfs tout ça !
C'est d'autant plus stupide que ces informations sont disponibles quelque part dans /sys/class/hwmon/, accessibles à travers la directive hwmon.
Dans mon cas, ça donne :
laurent@chose ~ $ ls /sys/class/hwmon/
hwmon0
laurent@chose ~ $ ls /sys/class/hwmon/hwmon0
laurent@chose ~ $ ls /sys/class/hwmon/hwmon0/device/
alarms fan2_div in0_min in2_max in4_input temp1_alarm temp2_max_hyst
driver fan2_input in1_alarm in2_min in4_max temp1_input temp3_alarm
fan1_alarm fan2_min in1_input in3_alarm in4_min temp1_max temp3_input
fan1_div hwmon in1_max in3_input modalias temp1_max_hyst temp3_max
fan1_input in0_alarm in1_min in3_max name temp2_alarm temp3_max_hyst
fan1_min in0_input in2_alarm in3_min power temp2_input uevent
fan2_alarm in0_max in2_input in4_alarm subsystem temp2_max
Donc j'obtiendrais la tension "+3.3v" par la directive
${hwmon 0 in 2}
Aucun fork, aucune charge supplémentaire à déplorer.
Il peut arriver sur certaines cartes que les sondes de température ne soient pas détectées par lm_sensors, mais passent par l'ACPI : elles seront utilisables à travers la directive acpitemp de conky ... sauf qu'à la date où j'écris ces lignes, cette méthode ne fonctionne pas non plus : conky passait par le pseudo filesystem /proc pour y accéder, ce qui n'est plus supporté depuis quelques versions du kernel.
La première chose à faire est de s'assurer qu'une sonde existe. Dans /var/log/messages, on devrait voir quelque chose du genre :
Dec 30 18:31:35 k7 kernel: [ 0.921694] thermal LNXTHERM:00: registered as thermal_zone0 Dec 30 18:31:35 k7 kernel: [ 0.923063] ACPI: Thermal Zone [THRM] (22 C)
Ce qui indique que l'on trouvera les informations correspondantes dans le répertoire
/sys/class/thermal/thermal_zone0
dont le fichier temp nous intérressera au plus haut point : il contient l'information que nous cherchons en 1000eme de degrés. A nouveau, de nombreux exemples sur le web utilisent des ${exec ...} pour l'intégrer dans conky. A nouveau, c'est naze pour les perfs à cause des forks donc j'ai préféré créer le script LUA suivant
function conky_getTemp( dev ) for line in io.lines( dev .. '/temp' ) do t = line end return t/1000 end
il s'appelera simplement par un
${color lightgrey}Zone 0 :$color ${lua getTemp /sys/class/thermal/thermal_zone0/ } �C
Un autre paramètre important à surveiller est la température des disques. La grande majorité des disques récents dispose de sonde température. En plus, ce coup-ci, on ne dépend plus du constructeur de la machine : dans le cas de constructeur adepte forcené du proprio tel que Dell, ça peu même être la seule information disponible.
La procédure consiste simplement à installer et configurer hddtemp comme indiqué dans ce Wiki.
Les informations sont accessibles dans Conky par la directive ${hddtemp}. Dans mon cas, j'ai des disques amovibles : pas de problème, il suffit de tous les lister et Conky affichera N/A pour ceux qui ne sont pas présents.
Grâce aux directives hddtemp_host et hddtemp_port, on peut indiquer à conky de monitorer une machine distante. Le problème est que comme ces paramètres sont globaux, une seule machine peut être suivi à un moment donné. Heureusement, Lua vient encore à notre aide.
Plus d'information sur la page dédiée.
Pour utiliser ces configurations,
conky -c <fichier>
Cette version est la plus simple, n'affiche que les informations importantes du système et ne nécessite aucune modification du kernel. Comme seuls les fonctionnalités propres à Conky sont utilisées, c'est une version très économe en ressources, que ce soit mémoire ou CPU.
En plus des informations de base, cette version ajoute les connections réseau et les informations provenant des sondes. lm_sensors est donc nécessaire et la configuration devra être modifiée en fonctions des sondes présentes sur le système cible.
Enfin, un script lua affiche des barres plus sympa que les jauges par défaut. D'après le fichier de configuration, il sera placé dans le répertoire /usr/local/share/conky/
Attention, ces barres sont assez chiantes, car leurs positions sont hardcodées dans le fichier. Ce qui signifie qu'en cas de déplacement d'une information, il faudra modifier ce fichier pour que les barres soient de nouveau bien placées.
Visitez : Nos sorties Ski et rando |
Copyright Laurent Faillie
2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso. |
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution. |
Visites durant les 7 derniers jours au total. |
Vous pouvez
laissez un commentaire
sur cette page.