Bonjour,
J'ai besoin de gérer les signaux sur un script pour que celui-ci kill d'autres signaux avant de se terminer lui même.
J'ai donc testé avec un script tout simple qui va écrire une ligne dans un log, killer un autre processus et enfin terminer le script en cours, le tout lorsqu'il capte un signal.
Voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #!/bin/bash Handle_Exit(){ echo 'detecte'>>my_log pkill -KILL mon_proc.sh exit 0 } trap "Handle_Exit" SIGTERM SIGINT EXIT sleep 60
J'arrive à gérer le ctrl+c que je fais moi même au clavier, écriture dans le log et kill de l'autre processus, donc mon handler marche, du moins en partie.
Lorsque je retire le trap et que je lance un kill -15 mon processus se termine sans problème mais lorsque je garde mon trap, le kill -15 ne fait rien, pas de terminaison du processus et pas d'écriture dans mon fichier de log non plus. Bref le SIGTERM est bien capté, il n'a aucun effet puisque mon processus ne se termine pas mais il n'est pas traité par ma fonction handle_exit.
J'ai fais beaucoup de test et je n'arrive pas a comprendre pourquoi le ctrl+c passe et les autres signaux non.
J'espère que quelqu'un sera capable de m'expliquer où se trouve mon erreur.
Partager