Re: cron pour lancer un gros et long process?

2004-03-24 Par sujet Julien Gilles
François Boisson [EMAIL PROTECTED] writes:

 On Tue, 23 Mar 2004 16:07:26 -0300
 Gurvan Huiban [EMAIL PROTECTED] wrote:

 
 user  23419  0.0  0.2  3432 2272 pts/4S15:13   0:00 /bin/bash
 root 23684  0.0  0.0  2044  928 ?S15:23   0:00
 /USR/SBIN/CRON user  23686  0.0  0.0 00 ?Z15:23  
 0:00 [monscript] defunct
 ghuiban  23694 30.4  0.6  8816 6652 ?R15:23   0:03 
 grosprocess
 
 Et ca me plait pas trop. Je voudrais juste trouver un moyen de lancer a
 heures fixes un gros processus, et que cron se contente de lancer le
 process...
 
 J'ai parcouru la man de cron, mais j'ai rien vu qui pourrait m'aider.
 
 Une idee?
 
 Met comme entrée

 0 6 * * * moi mon_script  /tmp/log.script 2 /tmp/err.script 

 Voilà, ça doit marcher

Mais quel est l'intérêt de lancer avec  ? cron attendra la fin du
process, mais ça ne l'empèchera pas d'en lancer d'autres... J'ai eu le
cas d'un script de backup lancé en cron qui ramait (pb réseaux) et
mettait plusieurs heures à s'effectuer, ça n'avait pas l'air de gêner
cron. J'ai loupé qqe chose ?

-- 
Julien Gilles.



Fwd: Re: cron pour lancer un gros et long process?

2004-03-24 Par sujet Gurvan Huiban
Oups desole, j'ai pas fait attention et envoye ma reponse non pas sur la 
liste, mais a Pierre Habouzit.

--  Forwarded Message  --

Subject: Re: cron pour lancer un gros et long process?
Date: Tuesday 23 March 2004 19:46
From: Gurvan Huiban 
To: Pierre Habouzit

On Tuesday 23 March 2004 16:40, Pierre Habouzit wrote:
 * * * * * (binaire_que_tu_veux_lancer 1 ficher de log) 

 dans le pire des cas, si ca ne marche pas, deux possibilités :
 1/ tu maitrises les sources du programme en question (ie c'est un
    programme que tu écris toi) dans ce cas ajoutes des options au dit
 programme du genre un '-d' pour daemonize qui fait le fork adequat.

Euh. Non, je ne maitrise pas les sources...

 2/ les sources sont pas gérées par toi, alors crée juste un script bash
 qui contient : (binaire_que_tu_veux_lancer 1 fichier_de_log) 

 et lance le depuis cron.

C'est ce que je fais (solution 2). Et c'est dans ce cas que j'ai le probleme
decrit dans mon mail original, a savoir que j'ai un processus /USR/BIN/CRON
(appartenant a root) qui est cree, et qui reste la jusqu'a ce que le
processus script (qui continue d'exister a l'etat de zombie) meurt (i.e.
lorsque les gros processus se termine).

Je n'ai pas tente la premiere solution mentionnee (mentionnee aussi par
Francois Boisson); parce que je ne connais pas a priori la ligne de commande
a executer. C'est mon script qui constuit la ligne de commande pour appeler
le gros processus.

J'illustre, parce que ca commence a devenir complique.

J'execute prg. Ce programme prend pour argument un fichier .prg
Sauf que je ne connais pas a priori le nom de ce fichier .prg, puisqu'il est
genere par un autre script, avec des noms qui dependent de mon instance de
test. Je ne peux donc pas directement mettre dans ma crontab
prg  input.prg  output.log

J'ai donc ecrit un petit script du genre

cd ${TEST}
for i in `\ls -d` ; do
  cd $i
  for j in `\ls *.prg` ; do
prg  $j  $i_$j.log 
  done
done

Et je voudrais appeler ce script avec cron, que les programmes prg soient
lances avec leurs fichiers d'entree respectifs. Lance dans un terminal ca
fonctionne. Mais lance a partir de cron, j'ai un processus monscript.sh qui
est zombie tant que mes processus prg tournent, et /USR/BIN/CRON qui reste
actif tant que le processus monscript.sh est zombie.

Il faudrait donc que cron lance le script, que ce dernier lance mes instances
de tests puis rende la main sans se zombifier. J'ai essaye de mettre une
entree comme ca dans mon crontab

* * * * * monscript.sh 

Mais j'ai toujours les deux processus mentionnes ci-dessus. Quelqu'un aurait
une bonne idee?

Ou (changons de point de vue): est-ce grave d'avoir les deux processus
sus-mentionnes le temps que mon programme prg tourne??


--

Gurvan Huiban  -  Ph.D Student

   Pos Graduacao  UFMG - Belo Horizonte - Brazil
project MASCOTTE  INRIA / CNRS / UNSA - Nice - France

---

-- 

Gurvan Huiban

What about a nice cup of coffee? (self-citation)



Re: cron pour lancer un gros et long process?

2004-03-24 Par sujet Gurvan Huiban
On Wednesday 24 March 2004 06:43, Julien Gilles wrote:
 Mais quel est l'intérêt de lancer avec  ? cron attendra la fin du
 process, mais ça ne l'empèchera pas d'en lancer d'autres... J'ai eu le
 cas d'un script de backup lancé en cron qui ramait (pb réseaux) et
 mettait plusieurs heures à s'effectuer, ça n'avait pas l'air de gêner
 cron. J'ai loupé qqe chose ?

Non, pas forcement. Je me pose aussi la question. Mais dans la liste des 
processus, j'ai un processus cron, appartenant a root, qui tourne (et qui 
resterait a tourner le temps que mon gros processus se termine. Et ca me 
plait moyen (c'est peut-etre bete, notez).

-- 

Gurvan Huiban

What about a nice cup of coffee? (self-citation)



Re: cron pour lancer un gros et long process?

2004-03-24 Par sujet Nicolas Rueff
Ainsi parla Gurvan Huiban le mercredi 24 mar 2004 vers 09:03 à propos de
« Re: cron pour lancer un gros et long process? » :

 On Wednesday 24 March 2004 06:43, Julien Gilles wrote:
  Mais quel est l'intérêt de lancer avec  ? cron attendra la fin du
  process, mais ça ne l'empèchera pas d'en lancer d'autres... J'ai eu
  le cas d'un script de backup lancé en cron qui ramait (pb réseaux)
  et mettait plusieurs heures à s'effectuer, ça n'avait pas l'air de
  gêner cron. J'ai loupé qqe chose ?
 
 Non, pas forcement. Je me pose aussi la question. Mais dans la liste
 des processus, j'ai un processus cron, appartenant a root, qui tourne
 (et qui resterait a tourner le temps que mon gros processus se
 termine. Et ca me plait moyen (c'est peut-etre bete, notez).

Autre solution: tu codes un wrapper qui change d'utilisateur, crée
une nouvelle session, puis se transforme en démon, puis lance ton
programme.

en C: man chdir(), man setsid(), man daemon(), man exec() .

(méthode valable pour d'autres langages tels que perl par exemple)

-- 
  Nicolas Rueff · Montbéliard · France · http://rueff.homelinux.org
 (^[EMAIL PROTECTED] · GPG 0xDD44DAB4
 /v\   Jabber [EMAIL PROTECTED] · ICQ 97700474
__/  « We are Penguin. Resistance is futile. You will be assimilated. »
 



Re: Fwd: Re: cron pour lancer un gros et long process?

2004-03-24 Par sujet François Boisson
On Wed, 24 Mar 2004 09:31:12 -0300
Gurvan Huiban [EMAIL PROTECTED] wrote:

 cd ${TEST}
 for i in `\ls -d` ; do
   cd $i
   for j in `\ls *.prg` ; do
 prg  $j  $i_$j.log 
   done
 done
 
 Et je voudrais appeler ce script avec cron, que les programmes prg
 soient lances avec leurs fichiers d'entree respectifs. Lance dans un
 terminal ca fonctionne. Mais lance a partir de cron, j'ai un processus
 monscript.sh qui est zombie tant que mes processus prg tournent, et
 /USR/BIN/CRON qui reste actif tant que le processus monscript.sh est
 zombie.

C'est logique que monscript.sh reste zombie puisque tous les processus
fils n'ont pas terminé. Il doit en être de même pour cron (un zombie n'est
pas considéré comme terminé (?)). Cela dit, ça n'est qu'une entrée dans la
table des processus, rien de plus. Un top doit montrer que ces processus
ne consomme aucune ressource. Donc, à part pour le sport, ça n'est pas
forcément la peine de vouloir éliminer à tout prix ces zombies.


François Boisson



Re: cron pour lancer un gros et long process?

2004-03-23 Par sujet Pierre Habouzit
lance ton process comme ca dans le crontab :

* * * * * (binaire_que_tu_veux_lancer 1 ficher de log) 

dans le pire des cas, si ca ne marche pas, deux possibilités :
1/ tu maitrises les sources du programme en question (ie c'est un
   programme que tu écris toi) dans ce cas ajoutes des options au dit
programme du genre un '-d' pour daemonize qui fait le fork adequat.

2/ les sources sont pas gérées par toi, alors crée juste un script bash
qui contient : (binaire_que_tu_veux_lancer 1 fichier_de_log) 

et lance le depuis cron.

Mais je suis persuadé que mettre directement cette ligne dans le crontab
marchera
-- 
Pierre Habouzit (X2000)
http://www.madism.org

  L'élève, comme la rivière, aimerait suivre son cours
   tout en restant dans son lit.   /Albert/ /Camus/



Re: cron pour lancer un gros et long process?

2004-03-23 Par sujet François Boisson
On Tue, 23 Mar 2004 16:07:26 -0300
Gurvan Huiban [EMAIL PROTECTED] wrote:

 
 user  23419  0.0  0.2  3432 2272 pts/4S15:13   0:00 /bin/bash
 root 23684  0.0  0.0  2044  928 ?S15:23   0:00
 /USR/SBIN/CRON user  23686  0.0  0.0 00 ?Z15:23  
 0:00 [monscript] defunct
 ghuiban  23694 30.4  0.6  8816 6652 ?R15:23   0:03 
 grosprocess
 
 Et ca me plait pas trop. Je voudrais juste trouver un moyen de lancer a
 heures fixes un gros processus, et que cron se contente de lancer le
 process...
 
 J'ai parcouru la man de cron, mais j'ai rien vu qui pourrait m'aider.
 
 Une idee?
 
Met comme entrée

0 6 * * * moi mon_script  /tmp/log.script 2 /tmp/err.script 

Voilà, ça doit marcher


François Boisson