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 vim
cré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 du
qu’il n’a pas été remarqué. vi
est 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 12345
et si cela échouait également, le redouté kill -9
entrerait 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 view
parce que vim
c'est presque toujours mieux ... quand il est installé. N'hésitez pas à les diriger vers view
ou à la vi -R
place.
Si vous ouvrez un tel fichier à modifier réellement, considérer sed
ou awk
ou une autre approche programmatique.