Я столкнулся с этой проблемой сегодня на коробке 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,46 ГБ (восьмой столбец, разделенный на 1024 ³) диска, несмотря на его отсутствие du
. vi
ужасно при просмотре очень больших файлов; даже 100 МБ это большое для него. 1,5 ГБ (или как бы велик этот файл на самом деле) нелепо.
Решение было в 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
или какой -либо другой программный подход.