Я зіткнувся з цією проблемою на вікні FreeBSD сьогодні. Проблема полягала в тому, що це артефакт vi
( vim
не впевнений, чи vim
створить цю проблему). Файл займав багато місця, але повністю не був записаний на диск.
Ви можете перевірити це за допомогою:
$ fstat -f /path/to/mount/point |sort -nk8 |tail
Це розглядає всі відкриті файли та їх сортування (чисельно через -n
) 8-м стовпцем (клавіша, -k8
), де відображаються останні десять елементів.
У моєму випадку остаточний (найбільший) запис виглядав так:
bob vi 12345 4 /var 97267 -rwx------ 1569454080 rw
Це означало, що процес (PID) 12345 витрачав 1,46G (восьмий стовпчик, розділений на 1024³) диска, незважаючи на відсутність du
його помічання . vi
жахливо переглядати надзвичайно великі файли; навіть 100 Мб для нього великий. 1.5G (або наскільки великий файл насправді був) є смішним.
Рішення полягало в тому, щоб sudo kill -HUP 12345
(якщо це не вийшло, я б sudo kill 12345
і якщо це теж не вдалося , боязнь kill -9
прийде в гру).
Уникайте редакторів тексту на великих файлах. Зразок способу вирішення для швидкого скимінгу:
Припускаючи розумні довжини рядків:
{ 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 -
Припускаючи необґрунтовано великі рядки:
{ head -c8000 big.log; tail -c8000 big.log } |vim -R -
Вони використовуються vim -R
замість того, view
що vim
майже завжди краще ... коли він встановлений. Не соромтеся подавати їх у view
або vi -R
замість цього.
Якщо ви відкриваєте такий великий файл, щоб його фактично редагувати, розгляньте sed
чи awk
інший програмний підхід.