Obwohl wir angewiesen wurden, dies nicht zu tun, verwendete ein Kollege von mir vi, um eine große Textdatei (server.log 3.5 GB) anzuzeigen. Dies füllte / var / tmp und verursachte einige Probleme auf dem Server.
Was hat das verursacht? Warum sollten wir vi nicht für große Dateien verwenden?
vi
(oder imvim
Übrigen) ist bei großen Dateien verdammt langsam und kann sogar unbrauchbar werden, wenn nicht viele Zeilenenden vorhanden sind. Außerdem muss die Datei in den Speicher passen. Verwenden Sieless
für große Dateien, es ist viel schneller und oft ausreichend zum Lesen / beobachtet Log - Dateien.Antworten:
Das Standardverzeichnis (/ var / tmp) für den vi-Bearbeitungspuffer benötigt ungefähr doppelt so viel Speicherplatz wie die Datei, mit der Sie arbeiten, da vi die zusätzlichen Zeilen für die Pufferbearbeitung verwendet.
Wenn im Verzeichnis / var / tmp nicht genügend Speicherplatz für den Bearbeitungspuffer vorhanden ist (z. B. wenn Sie mit einer großen Datei arbeiten oder auf dem System nicht genügend Speicherplatz vorhanden ist)
In einigen Fällen wird möglicherweise auch die folgende Fehlermeldung angezeigt
Informationen zur Fehlerbehebung finden Sie hier: http://kb.iu.edu/data/akqv.html
quelle
Vim wurde nicht für große Dateien entwickelt. Es hat bestimmte Funktionen, die die Benutzererfahrung drastisch verlangsamen. Beispielsweise wird die Datei in den Arbeitsspeicher geladen, wodurch grundsätzlich nur Dateien bearbeitet werden können, die kleiner als Ihre Arbeitsspeichergröße sind. Darüber hinaus sind Funktionen wie Syntaxhervorhebung, Auslagerung von Dateien und Rückgängigmachen bei großen Dateien sehr ineffizient und verlangsamen die Verarbeitung noch mehr. Ein weiteres Problem ist,
vim
dass man nicht zu lange Schlangen erwartet. Wenn eine Datei nur wenige Zeilenumbrüche enthält,vim
wird sie unbrauchbar.Trotzdem gibt es Plugins wie vim-largefile , die bestimmte Einstellungen so ändern, dass sie bei großen Dateien effizienter sind. Am Ende
vim
wird es jedoch nie bissig, wenn Sie mehrere GiBs darauf werfen.Unterm Strich nicht
vim
für große Dateien verwenden. Wenn Sie (im Gegensatz zum Bearbeiten) große Dateien anzeigen möchten, verwenden Sieless
. Wenn Sie nach einem Muster suchen möchten, geben Sie einen Schrägstrich ein, um die Suche nach einem Muster zu starten:Wenn Sie die Ausgabe filtern möchten, verwenden Sie ein kaufmännisches Und:
Starten Sie dann die kontinuierliche Ausgabe mit shift-f. Sie können die Dauerausgabeanzeige mit verlassen ctrl-cund Ihr Filtermuster verfeinern oder abbrechen oder eine Suche starten.
Um große Dateien zu bearbeiten, verwenden Sie Tools wie
sed
, sie sind effizient und genau für diesen Zweck konzipiert.quelle