J'ai rencontré ce problème sur une boîte FreeBSD aujourd'hui. Le problème était qu'il s'agissait d'un artefact de vi(pas vim, pas sûr de vimcréer ce problème). Le fichier occupait de l'espace mais n'avait pas été entièrement écrit sur le disque.
Vous pouvez vérifier cela avec:
$ fstat -f /path/to/mount/point |sort -nk8 |tail
Ceci examine tous les fichiers ouverts et les trie (numériquement via -n) par la 8ème colonne (clé, -k8), montrant les dix derniers éléments.
Dans mon cas, la dernière entrée (la plus grande) ressemblait à ceci:
bob vi 12345 4 /var 97267 -rwx------ 1569454080 rw
Cela signifie que le processus (PID) 12345 consomme 1.46G (la huitième colonne divisée par 1024³) de disque malgré le fait duqu’il n’a pas été remarqué. viest horrible à voir des fichiers extrêmement volumineux; même 100 Mo est grand pour cela. 1.5G (ou quelle que soit la taille du fichier) est ridicule.
La solution consistait à sudo kill -HUP 12345(si cela ne fonctionnait pas, je le ferais sudo kill 12345et si cela échouait également, le redouté kill -9entrerait en jeu).
Évitez les éditeurs de texte sur les gros fichiers. Exemples de solutions de contournement pour un écrémage rapide:
En supposant des longueurs de ligne raisonnables:
{ head -n1000 big.log; tail -n1000 big.log } |vim -R -
wc -l big.log |awk -v n=2000 'NR==FNR{L=$1;next}FNR%int(L/n)==1' - big.log |vim -R -
En supposant des lignes déraisonnablement grandes:
{ head -c8000 big.log; tail -c8000 big.log } |vim -R -
Ceux-ci utilisent vim -Rà la place de viewparce que vimc'est presque toujours mieux ... quand il est installé. N'hésitez pas à les diriger vers viewou à la vi -Rplace.
Si vous ouvrez un tel fichier à modifier réellement, considérer sedou awkou une autre approche programmatique.