Je crée des fichiers temporaires à partir d'un script bash. Je les supprime à la fin du traitement, mais depuis que le script est en cours d'exécution depuis longtemps, si je le tue ou simplement CTRL-C pendant l'exécution, les fichiers temporaires ne sont pas supprimés.
Existe-t-il un moyen de capturer ces événements et de nettoyer les fichiers avant la fin de l'exécution?Suppression de fichiers temporaires créés dans une sortie bash inattendue
De même, existe-t-il une sorte de meilleure pratique pour la dénomination et l'emplacement de ces fichiers temporaires?
Je suis actuellement pas sûr entre l'utilisation:
TMP1=`mktemp -p /tmp`
TMP2=`mktemp -p /tmp`
...
et
TMP1=/tmp/`basename $0`1.$$
TMP2=/tmp/`basename $0`2.$$
...
Ou est peut-être at-il des meilleures solutions?
Avec Bash, 'exec 5 <> $ TMPFILE' lie le descripteur de fichier 5 à $ TMPFILE en lecture-écriture , et vous pouvez utiliser '<&5', '> & 5', et'/proc/$$/fd/5' (Linux) par la suite. Le seul problème est que Bash manque de la fonction 'seek' ... – ephemient
Vous avez accepté de répondre depuis le lien que vous avez fourni est ce qui explique le mieux ce dont j'avais besoin. Merci – skinp
Quelques notes sur 'trap': il n'y a aucun moyen de piéger' SIGKILL' (par la conception, car elle se termine immédiatement l'exécution). Donc, si cela peut arriver, ayez un plan de secours (tel que 'tmpreaper'). Deuxièmement, les pièges ne sont pas cumulatifs - si vous avez plus d'une action à effectuer, ils doivent tous être dans la commande 'trap'. Une façon de gérer plusieurs actions de nettoyage est de définir une fonction (et vous pouvez la redéfinir au fur et à mesure de la progression de votre programme) et de faire référence à: 'trap cleanup_function EXIT'. –