[conky] il crée des processus zombies par centaines

Applications, problèmes de configuration réseau
Répondre
djipey
Chu Ko Nu
Messages : 437
Inscription : sam. 04 juin 2011, 10:13

[conky] il crée des processus zombies par centaines

Message par djipey »

Bonjour.

Je poste ici car mon conky, depuis quelques temps, crée un nombre incroyable de processus zombies. Les processus mis en cause sont sh (bash donc) et cat. Et je ne sais pas pourquoi. Cela ne le faisait pas il y a quelques temps. Je mets mon conkyrc en dessous, est-ce que vous pourriez me dire si vous voyez des erreurs ?

Code : Tout sélectionner

#------Mémoire et système------------------

 #taux de rafraichissement de la fenêtre (en secondes)
update_interval 1

#pour que conky tourne en arrière plan background no pour les tests
background yes

 #temps pour fermer conky en seconde. 0 = toujours actif 
total_run_times 0

 #réglage de la mémoire, pour éviter le clignotement
double_buffer yes
text_buffer_size 2048

 #Soustraire les mémoires tampons de la mémoire utilisée
no_buffers yes

 #nombre d'échantillons à utiliser pour calculer la moyenne d'utilisation
cpu_avg_samples 7
net_avg_samples 7
diskio_avg_samples 7

#--------Polices----------------------------

 #Utiliser Xft (polices lissées etc)
use_xft yes

#police a utiliser : use_xft doit être a "yes"
xftfont Arial:size=9
xftalpha 0.8

#permet l'affichage de caractères accentués
override_utf8_locale yes 

 #Tout le texte en majuscule
uppercase no

#-------Fenêtre-----------------------------

 #utiliser sa propre fenêtre
own_window yes

#pseudo transparence si vous avez des icones sous le conky elle ne seront plus accessible une fois conky activé
own_window_transparent yes


#type de fenêtre : normal(avec le cadre) / override / desktop
own_window_type override
own_window_hints  undecorated,below,sticky,skip_taskbar,skip_pager  # définition du type 


#------Ombres et contours--------------------

  #afficher les ombres
draw_shades no

 #afficher des contours
draw_outline no

# contours autour des blocs de texte
draw_borders no

#afficher les contours des graph, ça j'ai ajouté
draw_graph_borders yes

stippled_borders 8

# largeur des marges
border_inner_margin 4

# largeur du contour
border_width 1

#------------Taille et position-----------------
#une ligne == environ 12 pixels

#minimum_size 280 5
alignment bottom_right #détermine la position du conky sur l'écran, ici à droite.
gap_x 8 
gap_y 150 #position en ordonée, en partant du bas de l'écran

# Ajoute des espaces après certains objets pour éviter de les faire bouger.
# Fonctionne uniquement avec les polices Fixes
use_spacer none

#------------Couleurs---------------------------

default_color 4582B5  #définition de la couleur par défaut.Changer ici la couleur.
default_shade_color black
default_outline_color black


color1 AC3AA5 # un genre de violet
color2 FFFFFF # le blanc
color3 FFC100 # le jaune
color4 FF6400 # le orange
color5 FF0000 # le rouge


##------------A faire-------------------------
##
##conkyKeyring -u jeanpatrick.francoia -p 'PASSWORD';
##puis ${texeci 120 conkyEmail --servertype=IMAP --ssl --servername=imap.gmail.com --folder=Inbox --username=jeanpatrick.francoia --connectiontimeout=10}
##--> Avec conkyKeyring (gnome-keyring), on évite de laisser le mot de passe en clair dans le conky
##
##sudo chown djipey /var/lib/vnstat/  --> change les droits d'accès au dossier qui contient la base de donnée des périph. Permet la mise à jour dans le conky
##/var/lib/vnstat/.ip -> le backup
##
##Dans un terminal : sudo dpkg-reconfigure hddtemp
##Répondre oui à "Voulez-vous installer /usr/sbin/hddtemp « setuid root » ? " ---> Permet de mettre à jour la temp dans le conky

##Pour le up total, éditer /etc/uptimed.conf, et mettre la ligne LOG_MAXIMUM_ENTRIES à 0

##${texeci 300 vnstat -u -i eth0}

##--------Background--------------------------------------------
##on utilise un script lua (background.lua), pour changer l'arrière plan du conky.

##lua_load ~/conky/scripts/background.lua
##lua_draw_hook_pre conky_draw_bg

#${texeci 1 uprecords | grep 'up' | sed 's/%//' | sort -r | awk -F'up' '(NR == ){split($NF,tab,"|"); print tab[1]}'} - ${texeci 3600 uprecords | grep '%up' | awk -F'up' '{split($NF,tab,"|"); print tab[1]}'| cut -c 15-}%${alignr}${font Arial:size=7}${texeci 3600 uprecords | grep 'since' | tail -n 1 | cut -c 61- | cut -c -6}
#${texeci 3600 uprecords | grep '%up' | awk -F'up' '{split($NF,tab,"|"); print tab[1]}'| cut -c 15-}

##--------Tout est affiché à partir d'ici------------------------




TEXT

${image /home/djipey/conky/images/tux.resized.png -p 0,12 -f 7200}
${image /home/djipey/conky/images/email.resized.png -p 0,87 -f 7200}
${image /home/djipey/conky/images/amd_athlon.resized.png -p 0,165 -f 7200}
${image /home/djipey/conky/images/nvidia.resized.png -p 0,220 -f 7200}
${image /home/djipey/conky/images/network.resized.png -p 0,393 -f 7200}
${image /home/djipey/conky/images/hdd.resized.png -p 0,590 -f 7200}
#
#
#------Ordinateur et distribution-----------
#
${voffset -100}
${offset 65}$color Nom de l'ordi: ${color2}$nodename
${offset 65}$color Distribution:${color2} ${texeci 86400 lsb_release -si} $sysname  $machine
${offset 65}$color Noyau: ${color2}$kernel
${offset 65}$color MAJ: $color2${if_match ${texeci 1800  pacman -Qu | wc -l} ==0}Système à jour${else}${if_match ${texeci 1800 pacman -Qu | wc -l} ==1} 1 mise à jour disponible ${else}${texeci 1800 pacman -Qu | wc -l} mises à jour disponibles ${endif}${endif}
${offset 65}$color Up:${color2}${offset 5}$uptime 
${offset 65}$color Up tot: $color2${texeci 1 uprecords | grep 'up' | grep 'day' | tail -n 1 | cut -d '|' -f 1 | cut -c 11-} - ${texeci 3600 uprecords | grep '%' | cut -c 21- | cut -d '|' -f 1}%${alignr}${texeci 3600 uprecords | grep 'since' | tail -n 1 | cut -c 61- | cut -c -6}
$color$hr
##
#------Emails--------------
#

${offset 70}$color Inbox: ${color2}${texeci 120 conkyEmail --servertype=IMAP --ssl --servername=imap.gmail.com --folder=Inbox --username=jeanpatrick.francoia --password= --connectiontimeout=10}
${offset 70}$color Facebook: ${color2}${texeci 120 conkyEmail --servertype=IMAP --ssl --servername=imap.gmail.com --folder=Facebook --username=jeanpatrick.francoia --password= --connectiontimeout=10}
${offset 70}$color Forum: ${color2}${texeci 120 conkyEmail --servertype=IMAP --ssl --servername=imap.gmail.com --folder=Forum --username=jeanpatrick.francoia --password= --connectiontimeout=10}
${offset 70}$color Travail: ${color2}${texeci 120 conkyEmail --servertype=IMAP --ssl --servername=imap.gmail.com --folder=Travail --username=jeanpatrick.francoia --password= --connectiontimeout=10}
${offset 70}$color Suède: ${color2}${texeci 120 conkyEmail --servertype=IMAP --ssl --servername=imap.gmail.com --folder=Suede --username=jeanpatrick.francoia --password= --connectiontimeout=10}
$color$hr
#
#------Charge système---------------------------
#
${offset 65}${color1}${voffset 2}$color CPU 1:$alignc $color2${if_match ${cpu cpu0}>49}$color5${cpu cpu0}%   ${cpubar cpu0 7,76} ${else}${if_match ${cpu cpu0}<50}$color2${cpu cpu0}%   ${cpubar cpu0 7,76}${endif}${endif}  ${color1}${voffset -3}$font$color Temp: ${if_match ${texeci 5 cat /sys/devices/platform/coretemp.0/temp2_input | cut -c 1-2}>69}$color5${texeci 5 cat /sys/devices/platform/coretemp.0/temp2_input | cut -c 1-2}°C${else}${if_match ${texeci 5 cat /sys/devices/platform/coretemp.0/temp2_input | cut -c 1-2} <70}$color2${texeci 5 cat /sys/devices/platform/coretemp.0/temp2_input | cut -c 1-2}°C${endif}${endif}
${offset 65}${color1}${voffset 2}$color CPU 2:$alignc $color2${if_match ${cpu cpu1}>49}$color5${cpu cpu1}%   ${cpubar cpu1 7,76} ${else}${if_match ${cpu cpu1}<50}$color2${cpu cpu1}%   ${cpubar cpu1 7,76}${endif}${endif}  ${color1}${voffset -3}$font$color Temp: ${if_match ${texeci 5 cat /sys/devices/platform/coretemp.0/temp3_input | cut -c 1-2}>69}$color5${texeci 5 cat /sys/devices/platform/coretemp.0/temp3_input | cut -c 1-2}°C${else}${if_match ${texeci 5 cat /sys/devices/platform/coretemp.0/temp3_input | cut -c 1-2} <70}$color2${texeci 5 cat /sys/devices/platform/coretemp.0/temp3_input | cut -c 1-2}°C${endif}${endif} 
${offset 65}${voffset 3}$color Mémoire RAM : ${if_match $memperc>29}$color5$mem/$memmax - $memperc% ${membar}${else}${if_match $memperc<30}$color2$mem/$memmax - $memperc% ${membar}${endif}${endif}
${offset 65}$color Mémoire Swap: ${color2}  $swap/$swapmax - $swapperc% $swapbar
${offset 65}$color CG perf level: $color2${texeci 60 nvidia-settings -q GPUCurrentPerfLevel -t}/2
${offset 65}$font$color Temp GPU: $color2${texeci 60 nvidia-settings -q GPUCoreTemp -t}°C 
#depuis archlinux, on lance le demon hddtemp au démarrage et on l'écoute sur le port 7634 avec conky
${offset 65}$font$color${voffset -2} Temp DD: ${color2}${texeci 20 nc localhost 7634 | cut -c 31-32}°C
${offset 70}${color}Write: $color2${diskio_write /dev/sda3}${alignr 100}${color}${offset 30}Read: ${color2}${diskio_read /dev/sda3}
${offset 65}$color Fan speed: $color2${texeci 5 cat /sys/devices/platform/it87.2576/fan1_input} RPM 
$color$hr
#
#-------Commande top affichée---------------------
#
$color                               CPU%           MEM%
CPU usage
${color2} ${top name 1}${alignc 40}${top cpu 1}${alignc -10}${top mem 1}
${color2} ${top name 2}${alignc 40}${top cpu 2}${alignc -10}${top mem 2}
${color2} ${top name 3}${alignc 40}${top cpu 3}${alignc -10}${top mem 3}
${color2} ${top name 4}${alignc 40}${top cpu 4}${alignc -10}${top mem 4}

$color Process: ${if_match ${processes}>200} $color5$processes${else}${if_match ${processes}<=200}$color2$processes${endif}${endif} $color Running : $color2$running_processes
$color$hr
#
#--------Réseau---------------------------
#
      
${offset 65}$color Local: ${color2}${addr eth0} 
${offset 65}$color Mac: $color2${texeci 86400 /sbin/ifconfig eth0 | grep "ether" | awk '{print $2}'}
${offset 65}$color IP: ${if_existing /proc/net/route eth0}${color2}${texeci 86400 ~/conky/scripts/scriptip.sh}${endif}
#${offset 65}$font$color Ports ouverts: $color2${tcp_portmon 1  65535 count}


${color1}${offset 25}$font$color Down:${color2}${downspeed eth0}${offset 40}$font$color Up:${color2} ${upspeed eth0}
$color${downspeedgraph eth0 32,150 FFFFFF FFFFFF} $color${upspeedgraph eth0 32,150 FFFFFF FFFFFF}
${alignc 50}${font Arial:size=10}$color${voffset -5} Données:
$font$color Today dl: ${color2}${texeci 900 vnstat -u; vnstat -i eth0 | grep "today" | awk '{print $2 $3}'} $color ${goto 145}Today ul: ${color2}${texeci 900 vnstat -i eth0 | grep "today" | awk '{print $5 $6}'}
$color Yest. dl: ${color2}${texeci 86400 vnstat -i eth0 | grep "yesterday" | awk '{print $2 $3}'} $color ${goto 145}Yest. ul: ${color2}${texeci 86400 vnstat -i eth0 | grep "yesterday" | awk '{print $5 $6}'} 
$color Month dl: ${color2}${texeci 86400 vnstat -m -i eth0 | grep "'" | tail -n 1 | awk '{print $3 $4}'}$color ${goto 145}Month ul: ${color2}${texeci 86400 vnstat -m -i eth0 | grep "'" | tail -n 1 | awk '{print $6 $7}'}
$color Total dl: ${color2}${texeci 86400 vnstat -i eth0 | grep "rx:" | awk '{print $2 $3}'}$color ${goto 145}Total ul: ${color2}${texeci 86400 vnstat -i eth0 | grep "tx:" | awk '{print $5 $6}'} ${offset 35}(29/08/11)
$color$hr
#
#--------Espace disque---------------------------------
#

${offset 65}${voffset 5}$font$color Root:${color2}${alignc} ${fs_bar 8,75 /} ${alignr}${fs_free /}  /  ${fs_size /} (${fs_free_perc /}%)
${offset 65}$color Home: ${color2}$alignc${fs_bar 8,75 /home/djipey} $alignr${fs_free /home/djipey} / ${fs_size /home/djipey} (${fs_free_perc /home/djipey}%)
${offset 65}$color Trash: ${color2}${texeci 60 du -hs /media/data/.Trash-1000 | cut -d / -f 1}

$color Vidéos: ${color2}${texeci 86400 sed -n "1 p" ~/conky/nombre.txt}
$color Musiques: ${color2}${texeci 86400 sed -n "2 p" ~/conky/nombre.txt}
$color Images: ${color2}${texeci 86400 sed -n "3 p" ~/conky/nombre.txt}


#$color data: ${color2}$alignc${fs_bar 8,75 /media/data} $alignr${fs_free /media/data} / ${fs_size /media/data} (${fs_free_perc /media/data}%)
${execpi 15 grep \/media\/ /etc/mtab | cut -d ' ' -f 2 | while read line ; do echo '$color' `basename $line `':  ${color2} ${fs_bar 8,75 '$line'}      ${fs_free '$line'}  / ${fs_size '$line'} (${fs_free_perc '$line'})%' ; done }


## Donne la consommation CPU et mémoire de chaque instance de conky.
#${execi 1 top -b -n1 -p $(pidof conky |awk '{gsub(" ", ",", $0); print}') |awk '/conky/ {print "CPU:",$9"%","MEM:",$10"%"}'}
#

Bien à vous.
Avatar de l’utilisateur
widapit
Maître du Kyudo
Messages : 1148
Inscription : mar. 30 mars 2010, 22:53
Localisation : Toulouse

Re: [conky] il crée des processus zombies par centaines

Message par widapit »

Salut !

Non, vois pas d'erreur a priori, dans les options, la seule différence avec le mien est que j'ai:

Code : Tout sélectionner

background no
!!
Après je sais pas, tu n'as pas un lien cassé ou quelque chose comme ça qui fasse patiner une ligne ou un script...
tu as essayé de lancer manuellement chaque commande pour voir les retours ?
Je crois pas en avoir vu, mais si tu utilise un script .sh tu peux le lancer avec

Code : Tout sélectionner

bash -xv tonscript
pour le debugguer .
Sinon, comment lances-tu ton conky ?
tu as des info supplémentaires si tu le lances depuis une console ?

Par contre il y a un passage qui reste obscur pour moi dans le man de conky, que se passe-t-il si tu remplaces les texeci par execi ??
routeur(OpenWRT); serveurs(Debian, Arch); cléUSB(Black-Arch);
mon ordi(Arch-hardened) = {spectrwm, zsh} || je m'amuse aussi avec des Arduino !
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17580
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [conky] il crée des processus zombies par centaines

Message par benjarobin »

La différence entre texeci et execi est assez bien expliqué dans la doc. texeci lance toutes les commandes depuis un thread qui ne se termine jamais. S'il y a des processus zombies, c'est alors un bug de conky
http://www.linuxsa.org.au/tips/zombies.html
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
djipey
Chu Ko Nu
Messages : 437
Inscription : sam. 04 juin 2011, 10:13

Re: [conky] il crée des processus zombies par centaines

Message par djipey »

Alors en vrac :

execi, ça lance le processus, mais ça attends le retour de la commande pour continuer à afficher le reste du conky. Par exemple si tu as un execi au début, rien ne s'affichera après tant que tu n'auras pas eu la réponse de la commande. texeci lance la commande dans un thread, ce qui permet à conky de continuer l'affichage du reste du conky. Mais je pense que ça se termine à un moment.

background yes, c'est pour que quand tu lances conky à la console et que tu la fermes, ça continue de tourner. Un genre de nohup en somme.

Après pour les scripts, j'en ai qu'un, celui de l'ip, mais je ne pense pas qu'il bugue, vu comme il est simple.

Je lance conky grâce au autostart d'openbox, de manière triviale. Par contre quand je lance conky à la console, oui j'ai beaucoup de retour (enfin beaucoup, quelques lignes, mais j'avais déjà ça avant sans qu'il y ait des process zombies):

Code : Tout sélectionner


Conky: desktop window (267) is root window
Conky: window type - override
Conky: drawing to created window (0x1a00001)
Conky: Bad arguments: ' ' and '0'
Conky: compare failed for expression ' ==0'
Conky: failed to parse compare string '>69'
Conky: compare failed for expression '>69'
Conky: failed to parse compare string '>69'
Conky: compare failed for expression '>69'
Conky: drawing to double buffer
Conky: desktop window (267) is root window
Conky: window type - override
Conky: drawing to created window (0x1c00001)
Conky: drawing to double buffer
Conky: Bad arguments: ' ' and '70'
Conky: compare failed for expression ' <70'
Conky: Bad arguments: ' ' and '70'
Conky: compare failed for expression ' <70'
Je pense que le problème vient des dernières lignes, celles qui analysent l'utilisation des disques. Parce que j'ai beaucoup de zombies seulement quand je branche des disques externes. Je pense que ça pourrait être ça, mais je ne peux pas vraiment m'en rendre compte.

Est-ce que vous auriez des idées pour faire avancer la situation ?
Avatar de l’utilisateur
widapit
Maître du Kyudo
Messages : 1148
Inscription : mar. 30 mars 2010, 22:53
Localisation : Toulouse

Re: [conky] il crée des processus zombies par centaines

Message par widapit »

OK, merci pour les infos sur texeci, j'avoue que j'ai encore des lacunes en anglais...
pour background, je notais juste une différence...
Sinon pour ton problème, ça ressemble à une erreur de syntaxe ;

Code : Tout sélectionner

compare failed for expression ' ==0'
dans ta section Ordinateur et distribution
et

Code : Tout sélectionner

Conky: failed to parse compare string '>69'
Conky: compare failed for expression '>69'
et

Code : Tout sélectionner

Conky: failed to parse compare string '>70'
Conky: compare failed for expression '>70'
dans ta section Charge système
...par contre je ne sais pas ce que tu dois mettre à la place... :oops:

P.S.:[hs] un script pour récupérer ton ip ? publique ? je peux le voir ? (juste par curiosité) :mrgreen:
-Merci-
[/hs]
routeur(OpenWRT); serveurs(Debian, Arch); cléUSB(Black-Arch);
mon ordi(Arch-hardened) = {spectrwm, zsh} || je m'amuse aussi avec des Arduino !
djipey
Chu Ko Nu
Messages : 437
Inscription : sam. 04 juin 2011, 10:13

Re: [conky] il crée des processus zombies par centaines

Message par djipey »

Oui ça ressemble à un problème de syntaxe, mais le truc c'est que ça marche, j'ai jamais compris pourquoi.

Voilà mon script pour l'ip publique, des plus rudimentaires :

Code : Tout sélectionner

#!/bin/bash

#on vérifie que l'on est connecté à internet
if ping www.google.com -c 1 >/dev/null ; then #si l'on est connecté, on récupère l'ip
    echo `wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1 > /tmp/ip && cat /tmp/ip;`
    rm /tmp/ip
else
    echo "No address"
fi
Tenez moi au courant si vous découvrez d'où peut venir mon problème ;)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17580
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [conky] il crée des processus zombies par centaines

Message par benjarobin »

Remplace le déjà par ceci :

Code : Tout sélectionner

#!/bin/bash

IP_ADDR=""

if ping www.google.com -c 1 &> /dev/null ; then
    IP_ADDR=$(wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1 2> /dev/null)
fi

if [ -z $IP_ADDR ]; then
    IP_ADDR="No address"
fi

echo $IP_ADDR
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
djipey
Chu Ko Nu
Messages : 437
Inscription : sam. 04 juin 2011, 10:13

Re: [conky] il crée des processus zombies par centaines

Message par djipey »

Pourquoi tu utilises une variable pour faire ça ? Je ne comprends pas à quoi ça sert.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17580
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [conky] il crée des processus zombies par centaines

Message par benjarobin »

C'est plus propre, tu peux gérer le cas où wget échoue, et c'est quand même mieux qu'un fichier temporaire
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
widapit
Maître du Kyudo
Messages : 1148
Inscription : mar. 30 mars 2010, 22:53
Localisation : Toulouse

Re: [conky] il crée des processus zombies par centaines

Message par widapit »

Pour ma part, c'était juste pour voir par rapport à celui que j'utilises... et en fait c'est assez semblable ! :mrgreen:

Code : Tout sélectionner

#!/bin/bash
#
ping -c1 google.fr &> /dev/null
 if [[ $? != 0 ]]; then
		 echo "No Connection ..."
  else
		  links -dump http://mon-ip.com | grep '   Votre adresse IP est :' | sed 's/   Votre adresse IP est ://'
 fi
routeur(OpenWRT); serveurs(Debian, Arch); cléUSB(Black-Arch);
mon ordi(Arch-hardened) = {spectrwm, zsh} || je m'amuse aussi avec des Arduino !
Répondre