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

Signaler
Messages postés
65
Date d'inscription
jeudi 1 décembre 2016
Statut
Membre
Dernière intervention
21 août 2018
-
Rocailleux
Messages postés
542
Date d'inscription
mercredi 9 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
-
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



1 réponse

Messages postés
542
Date d'inscription
mercredi 9 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
76
Après test, il semble que ce soit un SIGKILL (9) qui est déclenché lors de la fermeture de la fenêtre
Integreur
Messages postés
65
Date d'inscription
jeudi 1 décembre 2016
Statut
Membre
Dernière intervention
21 août 2018

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
Messages postés
542
Date d'inscription
mercredi 9 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
76 > Integreur
Messages postés
65
Date d'inscription
jeudi 1 décembre 2016
Statut
Membre
Dernière intervention
21 août 2018

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