Re: cron pour lancer un gros et long process?
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?
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?
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?
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?
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?
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?
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