Büyük günlük dosyalarıyla daha hızlı arama yapmak nasıl daha az sağlanır?


15

Genellikle inanılmaz büyük günlük dosyaları (> 3 GB) ile uğraşıyorum. Bu dosyalarla daha az performansın korkunç olduğunu fark ettim. Çoğu zaman dosyanın ortasına atlamak istiyorum, ancak 15 M çizgiyi ileri atlamak için daha az şey söylediğimde dakikalar geçiyor ..

Hayal ettiğim sorun, dosyayı '\ n' karakterleri için daha az taramaya ihtiyaç duyması, ancak bu çok uzun sürüyor.

Sadece açık bir ofset aramanın bir yolu var mı? örneğin dosyada 1,5 milyar bayt ofseti aramak. Bu işlem büyüklük sırası daha hızlı olmalıdır. Daha azı böyle bir yetenek sağlamazsa, bunu yapan başka bir araç var mı?


dosyayı yasaklanmış karakterler için gözden kaçırıyorsanız, yukarıda belirtilen karakterleri bulduktan sonra temizleyeceğiniz adil bir varsayım mıdır? Eğer öyleyse, sunabilir miyimperl -pi -e 's/\n//g;' <filename>
Mike Pennington

Üzgünüm, yağma yanlış kelimeydi. Tarama kullanmalıydım. yeni satır için tasarım taramalarıyla daha az (\ n). Bu tarama büyük dosyalarda çok uzun zaman alır.
UsAaR33

Yanıtlar:


21

bunun gibi satırları saymayı daha az durdurabilirsiniz less -n

% 50 gibi belirli bir yere atlamak için, less -n +50p /some/logBu 1.5GB günlük dosyasında benim için anında oldu.

Düzenleme: Belirli bir bayt uzaklığı için: less -n +500000000P ./blah.log


1
Satır sayma asla sorun değildi; Bunun için sadece escp / ctrl-c kullanabilirsiniz. Ama asıl cevap bu; P belirli bir bayt ofsetine atlar!
UsAaR33

5

Daha azı, bir çağrı cihazı olmak, doğası gereği çizgi yönelimlidir. Başladığınızda, büyük bir dosya ise "satır numaralarını sayıyor" diyecektir ve bunu durdurmak için ESC'ye basarsınız, ancak aksi halde satırlar yapar. Yaptığı şey bu.

Dosyanın ortasına atlamak ve başlangıcını atlamak istiyorsanız, her zaman başlangıcın ötesine bakabilirsiniz; Gibi bir şey yapardım tail -c +15000000 /some/log | less.


3
kastetiyorsun ya tail -c ...da garip bir emrin var last.
Alan Curry

Bu stratejiyle ilgili sorun, artık tüm dosyadan daha azıyla (belirli mesajları arama vb.)
Arayamamanızdır.

@AlanCurry: Bu sadece alternatif bir yazım ... <grin>
womble

0

less yerel ayarlardan küçük bir ek yük var gibi görünüyor

Yalnızca ASCII karakterleri kullanıyorsanız, şunu kullanarak biraz hızlandırabilirsiniz:

LC_ALL=C less big-log-file.log

Benim durumumda, verim ~ 30M ib / s'den ~ 50 Mib / s'ye yükseldi (oran CPU'ya bağlı)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.