Forum Programmation.shell pb avec un daemon en shell

Posté par  .
Étiquettes : aucune
0
8
oct.
2004
Bonjour à tous,

J'ai fait un daemon en TCSH récupérant des données météorologique périodiquement. Je lance ce script ainsi: nohup ./monscript > /dev/null&

Or aprés quelques heures d'exécution, je m'apercoit qu'il y a plusieurs instance de ce programme. Plus je le laisse tourner, plus les instances se multiplient.... Pourtant je ne rappel pas le script dans ce script!

J'aurais voulu savoir si vous avez déjà rencontré un tel problème avec des scripts ayant un temps d'exécution long?

Merci

Jérémie
  • # non

    Posté par  . Évalué à 1.

    pour ma part, non.
    ca vient peut etre de ton script, si tu le postais ici tu aurais plus de chance de recevoir de l'aide
    • [^] # Re: non

      Posté par  . Évalué à 1.

      ok en voila un des deux:

      #!/bin/tcsh

      while ( 1 )
      'python' marrakech.py | 'awk' '{if($1=="Temperature:"){tmp=$4};if($1~"rtime:"){print $2 " " $3" " tmp}}' | sed -e 's/(//g' >> weather.marrakech
      'python' rabat.py | 'awk' '{if($1=="Temperature:"){tmp=$4};if($1~"rtime:"){print $2 " " $3" " tmp}}' | sed -e 's/(//g' >> weather.rabat
      example_agadir.py | 'awk' '{if($1=="Temperature:"){tmp=$4};if($1~"rtime:"){print $2 " " $3" " tmp}}' | sed -e 's/(//g' >> weather.agadir
      sleep 1200
      end
      • [^] # Re: non

        Posté par  . Évalué à 1.

        euh pardon!

        #!/bin/tcsh

        while ( 1 )
        'python' marrakech.py | 'awk' '{if($1=="Temperature:"){tmp=$4};if($1~"rtime:"){print $2 " " $3" " tmp}}' | sed -e 's/(//g' >> weather.marrakech
        'python' rabat.py | 'awk' '{if($1=="Temperature:"){tmp=$4};if($1~"rtime:"){print $2 " " $3" " tmp}}' | sed -e 's/(//g' >> weather.rabat
        'python' agadir.py | 'awk' '{if($1=="Temperature:"){tmp=$4};if($1~"rtime:"){print $2 " " $3" " tmp}}' | sed -e 's/(//g' >> weather.agadir
        sleep 1200
        end
        • [^] # Re: non

          Posté par  (site web personnel) . Évalué à 1.

          Personnelement je serai toi, 1 je modifierai les scripts marrakech.py rabat.py et agadir.py pour les rendre génériques et autosuffisants (exemple d'appel:`weather.py marrakech weather.marrakech')
          et 2 je ferai ces trois appels via crontab qui est la pour ca.

          Sinon pour ton probleme je subodore un bug dans les scripts python (un fork mal géré, un thread en boucle ..)
          • [^] # Re: non

            Posté par  . Évalué à 1.

            ok Merci pour la réponse. J'avais déjà pensé à crontab, je pense que je vais effectivement faire ca... Mais je me demande quand même d'ou peux bien venir ce comportement!

            Pour ce qui est de la généricité des scripts, je n'ai pas le temps, je fais ca pour un ami, le moins j'en fait mieux je me porte :-)
  • # pere

    Posté par  (site web personnel) . Évalué à 3.

    utilise pstree ou ps -f pour connaitre le pere de tes process, tu verras qui les lance.
    • [^] # Re: pere

      Posté par  . Évalué à 1.

      > ps -j (sous freebsd)
      USER PID PPID PGID JOBC STAT TT TIME COMMAND
      leguay 63913 1 63913 0 I p1- 0:00.06 /bin/tcsh ./fetch_weather
      leguay 66452 66451 66452 0 Ss p1 0:00.09 -tcsh (tcsh)
      leguay 66576 66452 66576 1 R+ p1 0:00.00 ps -j

      il se relance lui-même!!
      • [^] # Re: pere

        Posté par  . Évalué à 2.

        euh, je dis nimporte koi... son père est 1 pas 63913... vais boire un café moi ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.