Sto creando file temporanei da uno script bash. Li sto eliminando alla fine dell'elaborazione, ma poiché lo script è in esecuzione da un po 'di tempo, se lo uccido o semplicemente CTRL-C durante l'esecuzione, i file temporanei non vengono cancellati.
C'è un modo per rilevare quegli eventi e ripulire i file prima che l'esecuzione finisca?Rimozione di file temporanei creati in bash inaspettata exit
Inoltre, esiste una sorta di best practice per la denominazione e la posizione di tali file temporanei?
Non sono attualmente sicuro tra l'uso:
TMP1=`mktemp -p /tmp`
TMP2=`mktemp -p /tmp`
...
e
TMP1=/tmp/`basename $0`1.$$
TMP2=/tmp/`basename $0`2.$$
...
O forse c'è qualche soluzioni migliori?
Con Bash, 'exec 5 <> $ TMPFILE' lega il descrittore di file da 5 a $ TMPFILE come lettura-scrittura ed è possibile utilizzare '<&5', '> & 5', e'/proc/$$/fd/5' (Linux) in seguito. L'unico problema è che Bash non ha la funzione 'seek' ... – ephemient
Hai accettato la tua risposta dal momento che il link che hai fornito è ciò che spiega il meglio di ciò di cui avevo bisogno. Grazie – skinp
Un paio di note su 'trap': non c'è modo di intrappolare' SIGKILL' (in base alla progettazione, poiché termina immediatamente l'esecuzione). Quindi, se ciò potrebbe accadere, avere un piano di fallback (come 'tmpreaper'). In secondo luogo, le trappole non sono cumulative - se hai più di un'azione da eseguire, devono essere tutte nel comando "trap". Un modo per far fronte a più azioni di pulizia è definire una funzione (e ridefinirla mentre il programma procede, se necessario) e fare riferimento a questo: 'trap cleanup_function EXIT'. –