Menu

Trap avec bash quand on ferme le shell [Fermé]

Integreur 64 Messages postés jeudi 1 décembre 2016Date d'inscription 3 avril 2018 Dernière intervention - 25 avril 2017 à 19:54 - Dernière réponse : Rocailleux 542 Messages postés mercredi 9 mars 2016Date d'inscription 8 mars 2018 Dernière intervention
- 26 avril 2017 à 17:58
Bonjour,

J'ai fais un script bash qui utilise pas mal de fichier donc en cas d'erreur de l'utilisateur ou a la fermeture du shell via la croix, j'aimerais lancer le nettoyage des fichiers utilisé auparavant par le script.

les signaux ctrl+c marche bien avec
trap f_cleanup SIGINT
trap f_cleanup SIGTERM


dans ce cas la le nettoyage se lance, mais pas quand je quitte le shell via la croix de la fenetre.Comment faire sa ?

Merci a vous



Afficher la suite 

3 réponses

Rocailleux 542 Messages postés mercredi 9 mars 2016Date d'inscription 8 mars 2018 Dernière intervention - 25 avril 2017 à 21:36
0
Merci
Après test, il semble que ce soit un SIGKILL (9) qui est déclenché lors de la fermeture de la fenêtre
Integreur 64 Messages postés jeudi 1 décembre 2016Date d'inscription 3 avril 2018 Dernière intervention - 26 avril 2017 à 07:17
Donc si c'est un SIGKILL9 il y a pas moyen de faire le nettoyage des fichiers au moment de l'appui sur la croix de la fenetre ? vue que SIGKILL9 est une interruption directe ?
Rocailleux 542 Messages postés mercredi 9 mars 2016Date d'inscription 8 mars 2018 Dernière intervention > Integreur 64 Messages postés jeudi 1 décembre 2016Date d'inscription 3 avril 2018 Dernière intervention - 26 avril 2017 à 17:58
Je me suis trompé dans mon premier post, mon test montre que c'est SIGHUP qui est appellé :

#!/bin/bash

function a(){
echo 'a' >> logs
}
function b(){
echo 'b' >> logs
}
function c(){
echo 'c' >> logs
}
function d(){
echo 'd' >> logs
}
function e(){
echo 'e' >> logs
}
function f(){
echo 'f' >> logs
}
function g(){
echo 'g' >> logs
}


trap a SIGHUP
trap b SIGINT
trap c SIGQUIT
trap d SIGABRT
trap e SIGKILL
trap f SIGALRM
trap g SIGTERM


sleep 60s


Ce script a été lancé dans xterm, le fichier logs une fois le terminal fermé via la croix contient "a", donc SIGHUP