Я зіткнувся з цією проблемою на вікні 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інший програмний підхід.