[FSUG PD] Modi diversi di troncare un file

Nicola Ruggero nicola a nxnt.org
Sab 23 Lug 2011 23:36:14 CEST


Ciao,
scusate il cross-post su pluto-help...
è un po' di tempo che volevo sottoporre questa domanda a voi guru del
kernel Linux:

Ho trovato 2 sistemi per troncare i file *aperti* (es log applicativi):

# > nomefile

oppure

# cp /dev/null nomefile


nel primo caso il contenuto del file si tronca (con "vi" il file è
vuoto), ma su filesystem continua ad occupare spazio ed inode.
nel secondo caso invece il file si tronca (con "vi" il file è vuoto) e
su filesystem occupa 0 byte

in entrambi i casi l'applicativo che mantiene aperto e scrive il file
log non si arrabbia.

Come spiegare la differenza di comportamento?
La mia ipotesi è che nel secondo caso cp usi delle chiamate di sistema
al kernel per agire direttamente sugli inode del filesystem.
Nel primo caso invece, trattandosi di redirect della shell, il
procedimento implichi l'uso di un file handle con l'effetto che vi ho
descritto.

qualcuno sa spiegarmi realmente come funziona?

grazie, ciao!
Nicola



Maggiori informazioni sulla lista fsug-pd