Forum Programmation.shell arrete des scripts lancé par un script

Posté par  .
Étiquettes : aucune
0
22
nov.
2005
Bonjour,

J'ai fais un petit script qui appel un gros script plusieur fois.

ça donne a peu pres ça:

for deck in `ls /apache/base/plein-de-deck`
do
grosscript >> resultatgros-script &
done

Tout ça dans le but de realisé plein de tache
en parrallele pour reduire le temps de traitement.

Le probleme, c'est comme j'arrete le bousin si un jour
pose probleme?

Le petit script, il se ferme tout de suite, et je ne
peut pas tuer les gros script lancer, parce que je ne
vois que leur commande interne...

Comment fait on dans ce genre de cas...?

Normalement ça doit durer 5~10mn, mais bon, on ne sais jamais.
  • # PID PPID

    Posté par  . Évalué à 2.

    A ta place, j'écrirais dans ton fichier de log le PID du script principal (le petit) ce qui te permet par la suite de retrouver rapidement les process qu'il a lui même lancé à base de ps et grep.

    Vois-tu ce que je veux dire et est-ce que ça répondrait à tes besoins ?
    • [^] # Re: PID PPID

      Posté par  . Évalué à 2.

      Et comment je l'ai le pid du petit script...?
      • [^] # Re: PID PPID

        Posté par  . Évalué à 2.

        ne sachant pas, j'ai tapé dans google "pid d un script"
        première réponse:
        SAIT : Ecrire un shell-script bash sous GNU/Linux - [Programmation]
        La première pré-définie est $$ qui contient le PID du script. ... Par conséquent
        si une fonction à l'intérieur d'un script doit accéder à un des paramètres ...


        Même pas besoin d'ouvrir le premier lien, la réponse est dans la page de résultat de google, il suffisait juste d'avoir 40s de libre et le"courage" de chercher.
        • [^] # Re: PID PPID

          Posté par  . Évalué à 2.

          J'avoue, honte sur moi et tout mes chats.

          Merci bien en tous cas.
          • [^] # Re: PID PPID

            Posté par  . Évalué à 1.

            ça va pour cette fois, mais ne recommence pas ! ;)
  • # killall

    Posté par  . Évalué à 2.

    killall qui sait tuer un groupe de process à partir du nom.
    Si tu veux faire des trucs plus rafiinés, tu peux aussi regarder du côté de pidof

    man killall
    man pidof

    ouala :)
  • # Contrôle des processus du shell

    Posté par  . Évalué à 3.

    Salut,

    Le shell offre certains mécanismes de contrôle des processus. Au moins avec bash (pour les autres [ksh, zsh, ...] il faudra vérifier ce que je raconte), il est possible de gérer assez finement ce qui se passe.

    Regarde le manuel de bash (ou toute autre aide), et en particulier :
    - trap : permet d'intercepter un signal et d'exécuter une action en fonction de ce signal. Tu peux par exemple intercepter le signal SIGTERM (15) pour aller tuer les processus fils
    - jobs : cette comande interne permet de récupérer la liste des processus actifs avec leurs ID (jobs -l ou jobs -p)
    - kill : pour envoyer un signal à un processus particulier. Essaie d'abord du tuer les fils avec un SIGTERM (15), avant d'envoyer un SIGKILL (9) : ça laissera une chance aux processus de se terminer proprement.

    Avec ça tu devrais pouvoir commencer à correctement gérer les processus fils et les arrêts (pas trop) violents.

    A+
    JJD

Suivre le flux des commentaires

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