Chociaż otrzymaliśmy polecenie, aby tego nie robić, mój kolega użył vi, aby wyświetlić duży plik tekstowy (server.log 3,5 GB). To wypełniło / var / tmp i spowodowało pewne problemy na serwerze.
Co to spowodowało? Dlaczego nie powinniśmy używać vi do dużych plików?
vi
(lubvim
w tym przypadku) jest cholernie powolny w przypadku dużych plików i może być nawet bezużyteczny, jeśli nie ma wielu końców linii. Ponadto plik musi zmieścić się w pamięci. Użyjless
do dużych plików, jest znacznie szybszy i często wystarczający do odczytu / oglądania plików dziennika.Odpowiedzi:
Domyślny katalog (/ var / tmp) dla bufora edycji vi potrzebuje miejsca równego w przybliżeniu dwa razy większemu rozmiarowi pliku, z którym pracujesz, ponieważ vi używa dodatkowych linii do manipulowania buforem.
Jeśli w katalogu / var / tmp nie ma wystarczającej ilości miejsca na bufor edycji (np. Pracujesz z dużym plikiem lub w systemie brakuje miejsca
czasami możesz otrzymać następujący komunikat o błędzie, taki jak ten
O tym, jak to naprawić, możesz przeczytać tutaj: http://kb.iu.edu/data/akqv.html
źródło
Vim nie został zaprojektowany dla dużych plików. Ma pewne funkcje, które drastycznie spowalniają wrażenia użytkownika. Na przykład ładuje plik do pamięci, co zasadniczo ogranicza edycję plików mniejszych niż rozmiar pamięci. Ponadto funkcje takie jak podświetlanie składni, zamiana plików i cofanie są bardzo nieefektywne w przypadku dużych plików i jeszcze bardziej spowalniają działanie. Innym problemem jest to,
vim
że nie oczekuje on zbyt długich linii. Jeśli plik zawiera kilka znaków nowego wiersza,vim
staje się bezużyteczny.To powiedziawszy, istnieją wtyczki, takie jak vim-largefile, które zmieniają określone ustawienia, aby były bardziej wydajne w przypadku dużych plików, ale ostatecznie
vim
nigdy nie będzie fajne, jeśli rzucisz na niego kilka GiB.Najważniejsze jest to, że nie używaj
vim
dużych plików. Jeśli chcesz wyświetlić (w przeciwieństwie do edycji) duże pliki, użyjless
. Jeśli chcesz wyszukać wzór, użyj ukośnika, aby rozpocząć wyszukiwanie wzoru:Jeśli chcesz filtrować wyjście, użyj znaku handlowego i:
Następnie uruchom ciągłe wyjście za pomocą shift-f. Możesz wyjść z ciągłego wyświetlania danych wyjściowych za pomocą ctrl-ci udoskonalić lub anulować wzorzec filtra lub rozpocząć wyszukiwanie.
Aby edytować duże pliki, użyj narzędzi takich jak
sed
, są wydajne i zaprojektowane do tego właśnie celu.źródło