Dzisiaj napotkałem ten problem na urządzeniu FreeBSD. Problem polegał na tym, że był to artefakt vi
(nie vim
, nie jestem pewien, czy vim
stworzy ten problem). Plik zajmował miejsce, ale nie został w pełni zapisany na dysku.
Możesz to sprawdzić za pomocą:
$ fstat -f /path/to/mount/point |sort -nk8 |tail
Spogląda na wszystkie otwarte pliki i sortuje (numerycznie przez -n
) według 8. kolumny (klucz, -k8
), pokazując dziesięć ostatnich pozycji.
W moim przypadku ostatni (największy) wpis wyglądał tak:
bob vi 12345 4 /var 97267 -rwx------ 1569454080 rw
Oznaczało to, że proces (PID) 12345 zużywał 1,46G (ósma kolumna podzielona przez 1024³) dysku pomimo braku jego du
zauważenia. vi
jest okropny podczas oglądania bardzo dużych plików; nawet 100 MB jest na to duży. 1,5 G (lub jak duży był ten plik) jest niedorzeczne.
Rozwiązaniem było sudo kill -HUP 12345
(jeśli to nie zadziała, ja sudo kill 12345
i jeśli to też się nie powiedzie, to przerażające kill -9
wejdą do gry).
Unikaj edytorów tekstu na dużych plikach. Przykładowe obejścia dla szybkiego przeglądania:
Zakładając rozsądne długości linii:
{ 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 -
Zakładając nieuzasadnione duże linie:
{ head -c8000 big.log; tail -c8000 big.log } |vim -R -
Są użycie vim -R
zamiast view
poznieważ vim
jest prawie zawsze lepiej ... gdy jest zainstalowany. Zapraszam do włożenia ich do view
lub vi -R
zamiast.
Jeśli otwierasz tak duży plik, aby go faktycznie edytować, rozważ sed
lub awk
inne podejście programowe.