OVH Cloud OVH Cloud

daemon lanc

11 réponses
Avatar
Patrick No
Bonjour

J'ai un daemon qui appelle un bash qui est lancé au démarrage (rc5.d en
S99mondaemon) et qui bouffe toute la cpu.

Ce bash contient un "sleep 0,1" si je le passe à "sleep 1" je n'ai plus
le pb.

Si je restart le daemon tout rentre dans l'ordre.

J'ai essayé de supprimer le lancement automatique du daemon et de le
remplacer par un start dans bootmisc.sh ou rmnologin mais c'est toujours
la même chose.

Quand je dis bouffe la cpu en fait le bash prend que 10% de cpu mais
j'ai 51% de cpu user et 48% de cpu system qui sont consommé et que je ne
retrouve pas sur les process lancés.

J'ai essayé de remplacer le sleep par usleep mais c'est le même pb.

Je ne vois plus trop ou chercher la cause de ce pb.

Je suis en debian 3.0r2 noyau 2.4.18 sur un celeron 2Go avec 512 Mo de
RAM.

Si qq a une piste ?

Merci

Patrick


--
Pensez

10 réponses

1 2
Avatar
Stephane Bortzmeyer
On Wed, May 11, 2005 at 05:34:18PM +0200,
Patrick Noël wrote
a message of 40 lines which said:

Ce bash contient un "sleep 0,1"



J'ai des doutes :

% sleep 0,1
sleep: invalid time interval `0,1'
Try `sleep --help' for more information.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12914ième jour après Epoch,
Patrick Noël écrivait:

Bonjour

J'ai un daemon qui appelle un bash qui est lancé au démarrage (rc5.d en
S99mondaemon) et qui bouffe toute la cpu.

Ce bash contient un "sleep 0,1" si je le passe à "sleep 1" je n'ai plus
le pb.



Essaye avec "sleep 0.1", et éventuellement sans le sleep... Un sleep
dans un script de start, c'est bizarre.

Tu peux éventuellement nous en montrer un peu plus sur le contexte du
sleep ?

--
If you think last Tuesday was a drag, wait till you see what happens tomorrow!


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Patrick No
Non en woody 3.0rc2 avec un kernel 2.4.18 le sleep fonctionne bien
sleep 0,1
sleep 0,2 qui fait une pause plus longue que le 0,1
Sleep 0,3 ....



Le mercredi 11 mai 2005 à 18:09 +0200, Stephane Bortzmeyer a écrit :
On Wed, May 11, 2005 at 05:34:18PM +0200,
Patrick Noël wrote
a message of 40 lines which said:

> Ce bash contient un "sleep 0,1"

J'ai des doutes :

% sleep 0,1
sleep: invalid time interval `0,1'
Try `sleep --help' for more information.






--
Pensez
Avatar
Patrick No
le sleep 0.1 me donne "sleep: invalid time interval '0.1'"

avec un "sleep 1" cela fonctionne sans problème

le daemon lancé est un bash qui surveille la présence de fichiers dans
des dossiers pour les envoyer vers d'autres serveurs. Il contient une
boucle avec une tempo faite par un "sleep 0,1"

_________________________________________________________________________________________________________
#!/bin/bash


nom_script=`basename $0 .bash`

. /root/exe/init_script.bash

entreeocr="$bannettes/023ocr_envoi"
ftp_user="chainedecoupe"

sfo2.16.11.5

tempo_norm=0,1
tempo_util=$tempo_norm

if [ ! -d $entreeocr ]
then
echo "La bannette $entreeocr n'existe pas" >> $log_file
exit 1
fi

cd $entreeocr
while [ 1 ]
do
if [ -e $stop_file ]
then
rm -f $stop_file
exit 0;
fi

sleep $tempo_util

dir=`ls -rt --ignore=tmp.* 2> /dev/null | head -n 1`
if [ "$dir" != "" ]
then
echo "" >> $log_file
echo "0 `date "+%Y-%m-%d %H:%M:%S"` Traitement de $dir" >>
$log_file

archive=$travail_dir/$dir.tar

tar -cf $archive $dir
echo "$? `date "+%Y-%m-%d %H:%M:%S"` tar -cf $archive $dir" >>
$log_file

$transfert $archive $sfo $ftp_user
sortie=$?
echo "$sortie `date "+%Y-%m-%d %H:%M:%S"` $transfert $archive $sfo
$ftp_user" >> $log_file

if [ $sortie = 0 ]
then
rm -rf $entreeocr/$dir
echo "$? `date "+%Y-%m-%d %H:%M:%S"` rm -rf $entreeocr/$dir" >>
$log_file
fi

rm $archive
echo "$? `date "+%Y-%m-%d %H:%M:%S"` rm $archive" >> $log_file

fi

done

Le mercredi 11 mai 2005 à 18:14 +0200, François TOURDE a écrit :
Le 12914ième jour après Epoch,
Patrick Noël écrivait:

> Bonjour
>
> J'ai un daemon qui appelle un bash qui est lancé au démarrage (rc5.d en
> S99mondaemon) et qui bouffe toute la cpu.
>
> Ce bash contient un "sleep 0,1" si je le passe à "sleep 1" je n'ai plus
> le pb.

Essaye avec "sleep 0.1", et éventuellement sans le sleep... Un sleep
dans un script de start, c'est bizarre.

Tu peux éventuellement nous en montrer un peu plus sur le contexte du
sleep ?

--
If you think last Tuesday was a drag, wait till you see what happens tomorrow!






--
Pensez
Avatar
fra-duf-no-spam
Le 12915ième jour après Epoch,
Patrick Noël écrivait:

le sleep 0.1 me donne "sleep: invalid time interval '0.1'"

avec un "sleep 1" cela fonctionne sans problème

le daemon lancé est un bash qui surveille la présence de fichiers dans
des dossiers pour les envoyer vers d'autres serveurs. Il contient une
boucle avec une tempo faite par un "sleep 0,1"



Je m'en doutais ;)

Extrait:

while [ 1 ]
do


[...]
sleep $tempo_util

dir=`ls -rt --ignore=tmp.* 2> /dev/null | head -n 1`
if [ "$dir" != "" ]
then


[...]
fi

done



Dans un répertoire initial vide, ton prog boucle indéfiniement et à
toute vitesse. Selon ta machine, et éventuellement un souci sur la
commande sleep, tu vas consommer toute la CPU. Tu précises qu'avec un
sleep 1 ça marche, alors pourquoi ne pas faire ça?

D'autre part, un petit prog avec l'utilisation de select(2) devrait
pouvoir améliorer l'attente.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Patrick No
oui mais comment expliquer que juste en faisant un restart du daemon je
n'ai plus le pb, la conso cpu redevient normale.

N'y a t'il pas une différence entre le fait que le daemon soit lancé par
le système et le fait de le relancer à la main ?

d'autre part avec un ps -aux je ne vois pas les process qui consomment
la cpu !

Patrick

Le jeudi 12 mai 2005 à 11:13 +0200, François TOURDE a écrit :
Le 12915ième jour après Epoch,
Patrick Noël écrivait:

> le sleep 0.1 me donne "sleep: invalid time interval '0.1'"
>
> avec un "sleep 1" cela fonctionne sans problème
>
> le daemon lancé est un bash qui surveille la présence de fichiers dans
> des dossiers pour les envoyer vers d'autres serveurs. Il contient une
> boucle avec une tempo faite par un "sleep 0,1"

Je m'en doutais ;)

Extrait:

> while [ 1 ]
> do
[...]
> sleep $tempo_util
>
> dir=`ls -rt --ignore=tmp.* 2> /dev/null | head -n 1`
> if [ "$dir" != "" ]
> then
[...]
> fi
>
> done

Dans un répertoire initial vide, ton prog boucle indéfiniement et à
toute vitesse. Selon ta machine, et éventuellement un souci sur la
commande sleep, tu vas consommer toute la CPU. Tu précises qu'avec un
sleep 1 ça marche, alors pourquoi ne pas faire ça?

D'autre part, un petit prog avec l'utilisation de select(2) devrait
pouvoir améliorer l'attente.






--
Pensez
Avatar
mlz
Patrick Noël wrote:

oui mais comment expliquer que juste en faisant un restart du daemon je
n'ai plus le pb, la conso cpu redevient normale.

N'y a t'il pas une différence entre le fait que le daemon soit lancé par
le système et le fait de le relancer à la main ?

d'autre part avec un ps -aux je ne vois pas les process qui consomment
la cpu !

Patrick

Le jeudi 12 mai 2005 à 11:13 +0200, François TOURDE a écrit :


Le 12915ième jour après Epoch,
Patrick Noël écrivait:



le sleep 0.1 me donne "sleep: invalid time interval '0.1'"

avec un "sleep 1" cela fonctionne sans problème

le daemon lancé est un bash qui surveille la présence de fichiers dans
des dossiers pour les envoyer vers d'autres serveurs. Il contient une
boucle avec une tempo faite par un "sleep 0,1"




Je m'en doutais ;)

Extrait:



while [ 1 ]
do




[...]


sleep $tempo_util

dir=`ls -rt --ignore=tmp.* 2> /dev/null | head -n 1`
if [ "$dir" != "" ]
then




[...]


fi

done




Dans un répertoire initial vide, ton prog boucle indéfiniement et à
toute vitesse. Selon ta machine, et éventuellement un souci sur la
commande sleep, tu vas consommer toute la CPU. Tu précises qu'avec un
sleep 1 ça marche, alors pourquoi ne pas faire ça?

D'autre part, un petit prog avec l'utilisation de select(2) devrait
pouvoir améliorer l'attente.












voir peut-etre du cote des locales, pour les . et ,
tu n'as surement pas les memes locales dans ton rc et quand tu le
lance en tant que user.
donc le sleep avec la , ne marche plus, et ca boucle trop vite.







--
Pensez
Avatar
Patrick No
oui c'est bien ça c'est un pb de "." et de "," si je mets "sleep 0.1" je
n'ai plus de pb au démarrage par contre quand je relance le daemon là
j'ai la cpu qui monte à 100% Bravo car je ne crois pas j'aurai pu
trouver la cause de ce pb.

Il ne me reste plus qu'a corriger le problème pour avoir le "." ou la
"," pour tous

Patrick

Le jeudi 12 mai 2005 à 12:30 +0200, mlz a écrit :
Patrick Noël wrote:

>oui mais comment expliquer que juste en faisant un restart du daemon je
>n'ai plus le pb, la conso cpu redevient normale.
>
>N'y a t'il pas une différence entre le fait que le daemon soit lancé par
>le système et le fait de le relancer à la main ?
>
>d'autre part avec un ps -aux je ne vois pas les process qui consomment
>la cpu !
>
>Patrick
>
>Le jeudi 12 mai 2005 à 11:13 +0200, François TOURDE a écrit :
>
>
>>Le 12915ième jour après Epoch,
>>Patrick Noël écrivait:
>>
>>
>>
>>>le sleep 0.1 me donne "sleep: invalid time interval '0.1'"
>>>
>>>avec un "sleep 1" cela fonctionne sans problème
>>>
>>>le daemon lancé est un bash qui surveille la présence de fichiers dans
>>>des dossiers pour les envoyer vers d'autres serveurs. Il contient une
>>>boucle avec une tempo faite par un "sleep 0,1"
>>>
>>>
>>Je m'en doutais ;)
>>
>>Extrait:
>>
>>
>>
>>>while [ 1 ]
>>>do
>>>
>>>
>>[...]
>>
>>
>>> sleep $tempo_util
>>>
>>> dir=`ls -rt --ignore=tmp.* 2> /dev/null | head -n 1`
>>> if [ "$dir" != "" ]
>>> then
>>>
>>>
>>[...]
>>
>>
>>> fi
>>>
>>>done
>>>
>>>
>>Dans un répertoire initial vide, ton prog boucle indéfiniement et à
>>toute vitesse. Selon ta machine, et éventuellement un souci sur la
>>commande sleep, tu vas consommer toute la CPU. Tu précises qu'avec un
>>sleep 1 ça marche, alors pourquoi ne pas faire ça?
>>
>>D'autre part, un petit prog avec l'utilisation de select(2) devrait
>>pouvoir améliorer l'attente.
>>
>>
>>
>>
>
>
>
>>
> voir peut-etre du cote des locales, pour les . et ,
> tu n'as surement pas les memes locales dans ton rc et quand tu le
> lance en tant que user.
> donc le sleep avec la , ne marche plus, et ca boucle trop vite.
>
>
>






--
Pensez
Avatar
mlz
Patrick Noël wrote:

oui c'est bien ça c'est un pb de "." et de "," si je mets "sleep 0.1" je
n'ai plus de pb au démarrage par contre quand je relance le daemon là
j'ai la cpu qui monte à 100% Bravo car je ne crois pas j'aurai pu
trouver la cause de ce pb.

Il ne me reste plus qu'a corriger le problème pour avoir le "." ou la
"," pour tous

Patrick

Le jeudi 12 mai 2005 à 12:30 +0200, mlz a écrit :




tu as la solution de definir les locales qui te font plaisir en haut du
script
de telle maniere, ton script fonctionnera tout le temps.


--
Pensez
Avatar
fra-duf-no-spam
Le 12915ième jour après Epoch,
Patrick Noël écrivait:

oui mais comment expliquer que juste en faisant un restart du daemon je
n'ai plus le pb, la conso cpu redevient normale.



Ben juste parce que les locales ne sont pas les mêmes... Entre le . et
la , sleep va réagir de façon différente, générer une erreur
(invisible pour toi car tu fais 2>/dev/null), et du coup plus de sleep
et conso à fond.

d'autre part avec un ps -aux je ne vois pas les process qui consomment
la cpu !



C'est 'ls' qui consomme tout, mais tu ne le vois pas car ce n'est
jamais le même. Regarde le 'forkrate' et tu vas être surpris ;)


Patrick

Le jeudi 12 mai 2005 à 11:13 +0200, François TOURDE a écrit :
Le 12915ième jour après Epoch,
Patrick Noël écrivait:

> le sleep 0.1 me donne "sleep: invalid time interval '0.1'"
>
> avec un "sleep 1" cela fonctionne sans problème
>
> le daemon lancé est un bash qui surveille la présence de fichiers dans
> des dossiers pour les envoyer vers d'autres serveurs. Il contient une
> boucle avec une tempo faite par un "sleep 0,1"

Je m'en doutais ;)

Extrait:

> while [ 1 ]
> do
[...]
> sleep $tempo_util
>
> dir=`ls -rt --ignore=tmp.* 2> /dev/null | head -n 1`
> if [ "$dir" != "" ]
> then
[...]
> fi
>
> done

Dans un répertoire initial vide, ton prog boucle indéfiniement et à
toute vitesse. Selon ta machine, et éventuellement un souci sur la
commande sleep, tu vas consommer toute la CPU. Tu précises qu'avec un
sleep 1 ça marche, alors pourquoi ne pas faire ça?

D'autre part, un petit prog avec l'utilisation de select(2) devrait
pouvoir améliorer l'attente.







--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2