#1 Le 07/09/2010, à 16:02
- Samb95
Lancer et fermer un programme python depuis un script bash
Bonjour à tous,
Voilà j'ai fait un programme python qui utilise des threads que je lance depuis un script bash. Cependant, mon problème est que lorsque le script bash se ferme, mon programme python continue de tourner.
Il faut savoir que mon script bash est lancé à partir d'un autre programme. Lorsque ce programme en question se termine, il termine également mon script bash mais mon programme python lui continue de tourner.
Est-ce que quelqu'un aurait une idée de comment je dois faire pour que je dise à mon script bash de terminer mon programme python lorsqu'il se ferme ?
Merci d'avance.
Hors ligne
#2 Le 07/09/2010, à 16:40
- Totor
Re : Lancer et fermer un programme python depuis un script bash
Bonjour,
[...]
Lorsque ce programme en question se termine, il termine également mon script bash mais mon programme python lui continue de tourner.[...]
Est-ce vraiment le programme qui termine le script bash ? Si oui, sais-tu quel signal il envoie au script bash ?
Peut-on voire le script bash s'il n'est pas trop confidentiel ? Car suivant le script, des méthodes différentes peuvent être utilisées.
Brut de fonderie, à mettre dans ton script bash :
trap killPython SIGTERM SIGKILL
killPython()
{
# code pour arrêter le script Python via kill en utilisant soit le pid soit le n° de job...
}
Dernière modification par Totor (Le 07/09/2010, à 16:40)
-- Lucid Lynx --
Hors ligne
#3 Le 08/09/2010, à 08:35
- Samb95
Re : Lancer et fermer un programme python depuis un script bash
Bonjour,
Samb95 a écrit :[...]
Lorsque ce programme en question se termine, il termine également mon script bash mais mon programme python lui continue de tourner.[...]Est-ce vraiment le programme qui termine le script bash ? Si oui, sais-tu quel signal il envoie au script bash ?
Peut-on voire le script bash s'il n'est pas trop confidentiel ? Car suivant le script, des méthodes différentes peuvent être utilisées.
Brut de fonderie, à mettre dans ton script bash :
trap killPython SIGTERM SIGKILL killPython() { # code pour arrêter le script Python via kill en utilisant soit le pid soit le n° de job... }
Bonjour,
Merci pour ta réponse. Voici le script bash :
#!/bin/bash
python -u /home/moi/collectd/etc/prog.py admin:/usr/logs/data/admin/log/log1 lac:/usr/logs/data/lac/log/log1 acq:/usr/logs/data/acq/log/log1 top:/usr/logs/data/top/log/log1 ghost:/usr/logs/data/gost/log/log1 deb:/usr/logs/data/deb/log/log1
Le programme qui lance et qui termine mon script bash s'appelle collectd. Je ne sais pas quel signal est envoyé pour terminé mon script mais je vais rechercher et je posterai si je trouve quelque chose de concret.
Sinon le code que tu as posté, il faut que je le mette à la fin de mon programme ?
Merci
Hors ligne
#4 Le 08/09/2010, à 08:51
- Samb95
Re : Lancer et fermer un programme python depuis un script bash
J'ai trouvé le signal qui est envoyé par le programme pour terminer mon script est le signal SIGTERM.
J'ai implémenté dans mon programme python le fait qu'il s'arrête sur un "ctrl+c". Est-il possible d'envoyer un "ctrl+c" à mon programme Pyhton lorsque mon script bash reçoit le signal SIGTERM ?
Merci
Hors ligne
#5 Le 08/09/2010, à 09:02
- Totor
Re : Lancer et fermer un programme python depuis un script bash
Est-il possible d'envoyer un "ctrl+c" à mon programme Pyhton lorsque mon script bash reçoit le signal SIGTERM ?
Oui, tu envoies le signal SIGTERM !
C'est ce que je t'ai répondu la première fois. i.e utiliser "kill"
edit :
voilà qui devrait le faire
#!/bin/bash
pyPID=$$
trap killPython SIGTERM SIGKILL
killPython()
{
kill ${pyPID}
}
python -u /home/moi/collectd/etc/prog.py admin:/usr/logs/data/admin/log/log1 lac:/usr/logs/data/lac/log/log1 acq:/usr/logs/data/acq/log/log1 top:/usr/logs/data/top/log/log1 ghost:/usr/logs/data/gost/log/log1 deb:/usr/logs/data/deb/log/log1 &
pyPID=$!
wait
Dernière modification par Totor (Le 08/09/2010, à 09:10)
-- Lucid Lynx --
Hors ligne
#6 Le 08/09/2010, à 09:34
- Samb95
Re : Lancer et fermer un programme python depuis un script bash
Samb95 a écrit :Est-il possible d'envoyer un "ctrl+c" à mon programme Pyhton lorsque mon script bash reçoit le signal SIGTERM ?
Oui, tu envoies le signal SIGTERM !
C'est ce que je t'ai répondu la première fois. i.e utiliser "kill"edit :
voilà qui devrait le faire#!/bin/bash pyPID=$$ trap killPython SIGTERM SIGKILL killPython() { kill ${pyPID} } python -u /home/moi/collectd/etc/prog.py admin:/usr/logs/data/admin/log/log1 lac:/usr/logs/data/lac/log/log1 acq:/usr/logs/data/acq/log/log1 top:/usr/logs/data/top/log/log1 ghost:/usr/logs/data/gost/log/log1 deb:/usr/logs/data/deb/log/log1 & pyPID=$! wait
Merci pour ton aide, je posterai plus tard pour dire si ça a marché, comme je ne peux pas tester actuellement
Hors ligne
#7 Le 08/09/2010, à 10:23
- Samb95
Re : Lancer et fermer un programme python depuis un script bash
C'est tout bon ça fonctionne
Merci pour ton aide, c'est cool.
Hors ligne