Je suis emballage une application FastCGI dans un script bash comme ceci:Tuer script bash enfants avant-plan lorsqu'un signal vient
#!/bin/bash
# stuff
./fastcgi_bin
# stuff
Comme bash exécute uniquement des pièges pour les signaux lorsque le script se termine premier plan, je ne peux pas simplement kill -TERM scriptpid
parce que l'application fastcgi sera maintenue en vie.
J'ai essayé d'envoyer le fichier binaire à l'arrière-plan:
#!/bin/bash
# stuff
./fastcgi_bin &
PID=$!
trap "kill $PID" TERM
# stuff
Mais si je le fais comme ça, apparemment le stdin et stdout ne sont pas correctement redirigés car il ne se connecte pas avec lighttpds mod_fastgi, la version d'avant-plan fonctionne. J'ai regardé le problème et cela arrive parce que bash redirige/dev/null vers stdin quand un programme est lancé en arrière-plan, donc toute façon d'éviter cela devrait aussi résoudre mon problème.
Un indice sur la façon de résoudre ce problème?
c'était aussi ma première pensée: 'killpg'. – tchrist
'exec' était exactement ce dont j'avais besoin! Merci –
Vous pouvez également envisager l'approvisionnement de l'autre script. Cela lui permet de fonctionner dans le même processus sans éliminer le reste du script en cours. (par exemple ./fastcgi.bin) (c'est-à-dire) –
GinoA