Як отримати менше, щоб швидше шукати великі файли журналів?


15

Я часто маю справу з неймовірно великими файлами журналів (> 3 ГБ). Я помітив, що продуктивність менш жахлива з цими файлами. Часто мені хочеться стрибнути на середину файлу, але коли я скажу менше стрибати вперед на 15 М рядків, це потребує хвилин.

Проблема, яку я собі уявляю, полягає в тому, що потрібно менше сканувати файл на предмет \ \ n 'символів, але це займає занадто багато часу.

Чи є спосіб зробити це просто прагненням до явного компенсації? наприклад, прагнути байт змістити 1,5 мільярда у файлі. Ця операція повинна бути на порядок швидшою. Якщо менше не забезпечує таку можливість, чи є інший інструмент, який це робить?


якщо ви знімаєте файл для заборонених символів, чи справедливо припущення, що ви очистите вищезазначені символи після їх пошуку? Якщо так, я можу запропонуватиperl -pi -e 's/\n//g;' <filename>
Майк Пеннінгтон,

Вибачте, ским було неправильне слово. Повинні були використовувати сканування. менше за сканування дизайну на новий рядок (\ n). Таке сканування займає великі файли дуже довго.
UsAaR33

Відповіді:


21

ви можете менше зупинятися на підрахунку таких рядків less -n

Щоб перейти до конкретного місця, наприклад скажімо, на 50%, less -n +50p /some/logце було для мене моментальним файлом журналу 1,5 Гб.

Редагувати: для конкретного зміщення байтів: less -n +500000000P ./blah.log


1
Підрахунок рядків ніколи не був проблемою; Я можу просто використовувати escp / ctrl-c для цього. Але це фактична відповідь; P переходить до певного байтового зміщення!
UsAaR33

5

Менше, будучи пейджером, за своєю суттю орієнтується на лінію. Якщо ви запускаєте, якщо це великий файл, він скаже "підрахунок номерів рядків", і ви натиснете ESC, щоб зупинити це, але в іншому випадку він робить рядки. Це те, що робить.

Якщо ви хочете перейти прямо в середину файлу і пропустити початок, ви завжди можете просто пройти повз початку; Я б робив щось подібне tail -c +15000000 /some/log | less.


3
ви або маєте на увазі, tail -c ...або у вас є дивна lastкоманда.
Алан Карі

Проблема цієї стратегії полягає в тому, що ви більше не можете шукати весь файл ізсередини (пошук конкретних повідомлень тощо)
Sekenre

@AlanCurry: Це просто альтернативне написання ... <grin>
womble

0

less Здається, невеликі накладні витрати з налаштувань мови

Якщо ви використовуєте лише символи ASCII, ви можете трохи прискорити його, використовуючи:

LC_ALL=C less big-log-file.log

У моєму випадку пропускна здатність зросла з ~ 30 Мб / с до ~ 50 Мбіт / с (швидкість пов'язана з процесором)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.