마지막 x GB 만 ​​거대한 로그 파일 (> 14GB)에 집어 넣습니까?


34

거대한 로그 파일 (14GB 이상)에서 무언가를 검색해야합니다. 나는 그것이 지난 4GB 정도에 있다고 확신합니다.

속도를 높이기 위해 첫 번째 X GB를 건너 뛸 수있는 방법이 있습니까?


7
LC_ALL=C grep속도가 빨라질 수 있습니다.
jfs

1
grep알 수없는 길이의 와일드 카드 (예 :와 같은 a.*thing)를 사용하면 현명한 표현 을 선택하여 많은 속도를 얻을 수 있습니다 . 파일의 일부만 검색해도 결코 아프지 않지만 파일 속도의 가장 큰 원인이 아닐 수도 있습니다.
Floris

답변:


75

스위치 를 사용하여 tail 을 사용하여 마지막 4GB 정도만 출력 할 수 있다고 생각합니다.-c

-c, --bytes = [+] NUM
은 마지막 NUM 바이트를 출력합니다. 또는 -c + NUM을 사용하여 각 파일의 바이트 NUM으로 시작하여 출력하십시오.

예를 들어 시작하려는 오프셋 으로 설정 하고 ing하여 dd로 무언가를 할 수도 있습니다.bs=1skip

dd if=file bs=1024k skip=12g | grep something

83
그런 다음 logrotate를 구성해야합니다.
제랄드 슈나이더

3
@Rogier 질문에 솔루션을 추가하는 대신 솔루션으로 답변을 추가하십시오. 이것은 self-answer : serverfault.com/help/self-answer
AL

5
@istheEnglishway : 글쎄요, 그들은 다른 명령을 게시했습니다.
Monica

11
그러나 귀하의 답변은 해당 솔루션을 구현하는 실제 명령을 제공하지 않으며 이는 부가 가치입니다. 답변을 수정하거나 OP가 새 답변으로 게시 할 수 있습니다. 그들은 분명히 그것을 질문에 추가해서는 안됩니다. 그리고 당신은 분명히 "코를 찌르는 것"과 같은 소피를 던져서는 안됩니다.
Monica와의 가벼운 경주

7
@istheEnglishway, 믿거 나 예제가 없으면 매뉴얼 페이지를 읽는 것보다 쉽게 ​​할 수 있습니다 (또한 stackoverflow 문서 참조)
Pierre.Sassoulas

32

의견 중 일부가 요청했기 때문에 이것을 게시하고 있습니다.

내가 결국 사용하는 것은 (15GB 파일)이었습니다. 그것은 매우 빠르게 작동하여 많은 시간을 절약했습니다.

tail -f -c 14G file | grep something

또한 동일한 파일에서 매우 기초적인 벤치 마크를 수행했습니다. 나는 테스트했다 :

grep xxx 파일
// 영원히 걸렸습니다 (> 5 분)

dd if = 파일 bs = 1 skip = 14G | grep xxx
// 매우 빠름 <1 초

꼬리 -c 14g | grep xxx
// 꽤 빠름 <2 초

tail조금 짧습니다.

NB : 사용 된 접미사 gG명령마다 다릅니다 (Ubuntu 15.10)


벤치 마크 사이의 디스크 캐시를 지우셨습니까? 첫 번째 시간의 대부분은 I / O라고 생각합니다. 속도는 300 배가 아닌 15 배 정도 여야합니다.
Reid

2
@ 리드하지 않았다. 그러나 명령을 여러 번 실행 했습니다. dd 또는 tailgrep (캐시 여부) 보다 속도를 크게 향상시킬 것이라고 확신합니다 .
Roger

19

제목 질문에는 대답하지 않지만 원하는 작업을 수행합니다. tac를 사용하여 파일을 뒤집은 다음 grep을 사용하여 문자열을 찾으십시오. 문자열이 파일에서 한 번만 또는 알려진 횟수만큼 발생하면 알려진 횟수를 찾을 때까지 실행되도록하십시오. 그렇게하면 파일의 위치에 대한 가정이 틀리더라도 여전히 찾을 수 있습니다. 제한하고 싶다면 head를 사용하면됩니다. head 명령은 전술과 grep 사이에 있습니다.

따라서 명령은 다음과 같습니다.

tac < logfile | grep myString

1
나는 똑같은 대답을 쓰기 위해 여기에 왔습니다. 아무도 당신을 겁내지 않은 것에 놀랐습니다.
Dmitry Grigoryev의

2
잠깐 나왔는데 말장난에 신음 소리를 냈어요. 전술은 고양이의 반대입니다.
Sammi

1
응용 프로그램 / 디버그 로그 를 파헤쳐 야했습니다 . 줄을 뒤집기 때문에 읽기가 쉽지 않습니다. ;-) 그러나 매우 빠릅니다. 본 적이 tac없어서 고마워!
Roger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.