Forum Programmation.shell PID Père et fils: HELP

Posté par  .
Étiquettes : aucune
0
8
fév.
2006
Bonjour,

J'aurais besoin d'un coup de main: je développe un script qui en appelle d'autres. Jusque là rien d'extraordinaire, le truc c'est que je crée dans le premier un fichier qui contient son pid, et je voudrais faire pareil pour les scripts appelés.
Et là je désespère.

Voici mon code du script principal tata.sh:
#!/bin/ksh

while true
do
. ./toto.sh $TRIG &
done
echo $! > tata.pid

------------------------------
Je voudrais
mettre le pid de chaque toto dans un fichier nommé en ${TRIG}_toto.pid
  • # 2 solutions

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


    while true
    do
    . ./toto.sh $TRIG &
    echo $$ >"$TRIG"_toto.pid
    done

    devrait faire ce que tu veux (avec $TRIG initialisé bien sur).
    Tu peux aussi faire

    echo $! > "$1"_toto.pid

    dans toto.sh

    Sinon

    . ./toto.sh $TRIG &

    normalement le . fait en sorte que le shell courant est ecrasé par le shell executé, je comprend pas trop pourquoi tu utilise ca.
    • [^] # Re: 2 solutions

      Posté par  . Évalué à 1.

      Malheureusement cela ne donne pas le bon résultat:


      echo $! > tata.pid donne un fichier vide dans tata.pid

      et le
      echo $$ >toto.pid donne dans toto.pid un pid 24470
      alors que je trouve:
      webadm 24471 1 0 09:01:47 pts/18 0:00 /bin/ksh ./tata.sh

      CATASTROPHE! :(
      • [^] # Re: 2 solutions

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

        Désolé, j'ai inversé $$ et $!
        man bash
        $ Se transforme en PID du shell. Dans un sous-shell (), il se transforme en PID du shell,et non pas du sous-shell.
        ! Se transforme en PID de la commande (asynchrone) exécutée en arrière-plan le plus récemment.

        et un exemple:

        $ cat pere.sh
        #!/bin/bash
        echo "pere: $$"
        ./fils.sh &
        echo "fils: $!"
        $ cat fils.sh
        #!/bin/bash
        echo "fils2: $$"
        $ ./pere.sh
        pere: 5951
        fils: 5952
        fils2: 5952

Suivre le flux des commentaires

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