Ich bin heute auf einer FreeBSD-Box auf dieses Problem gestoßen. Das Problem war, dass es ein Artefakt von war vi
(nicht vim
, nicht sicher, ob vim
dieses Problem entstehen würde). Die Datei beanspruchte Speicherplatz, wurde jedoch noch nicht vollständig auf die Festplatte geschrieben.
Sie können das überprüfen mit:
$ fstat -f /path/to/mount/point |sort -nk8 |tail
Hier werden alle geöffneten Dateien angezeigt und (numerisch über -n
) nach der achten Spalte (Taste, -k8
) sortiert , wobei die letzten zehn Elemente angezeigt werden.
In meinem Fall sah der letzte (größte) Eintrag so aus:
bob vi 12345 4 /var 97267 -rwx------ 1569454080 rw
Dies bedeutete, dass der Prozess (PID) 12345 1,46 G (die achte Spalte geteilt durch 1024³) der Festplatte verbrauchte, obwohl dies nicht du
bemerkt wurde. vi
Es ist schrecklich, extrem große Dateien anzuzeigen. sogar 100 MB sind dafür groß. 1,5G (oder wie groß diese Datei auch war) ist lächerlich.
Die Lösung war sudo kill -HUP 12345
(wenn das nicht sudo kill 12345
klappen kill -9
würde, würde ich und wenn das auch scheitern würde, würde das gefürchtete ins Spiel kommen).
Vermeiden Sie Texteditoren für große Dateien. Beispielumgehungen für schnelles Überfliegen:
Angenommene angemessene Leitungslängen:
{ 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 -
Unangemessen große Leitung (en) annehmen:
{ head -c8000 big.log; tail -c8000 big.log } |vim -R -
Diese verwenden, vim -R
anstatt view
weil vim
es fast immer besser ist ... wenn es installiert ist. Fühlen Sie sich frei, sie in view
oder vi -R
stattdessen zu leiten.
Wenn Sie eine solche große Datei sind Öffnen es tatsächlich zu bearbeiten, betrachten sed
oder awk
oder einem anderen programmatischen Ansatz.