Redhat Linux 서버에서 대용량 로그 파일을 읽는 데 문제가 있습니다.

Redhat Linux 서버에서 대용량 로그 파일을 읽는 데 문제가 있습니다.

제 jboss 애플리케이션 서버는 약 8~10GB 정도의 매우 큰 로그 파일을 생성합니다. Redhat Linux 서버에서 이러한 로그 파일을 어떻게 볼 수 있습니까?

답변1

분할 명령을 사용해 보십시오.

split --bytes=100M <logfile> <logfile>

그리고 그렇습니다. 로그 파일을 더 자주 교체하십시오. 그러지 않는 것은 끔찍한 범죄입니다.

답변2

나는 주로 less로그 파일을 보는 데 사용합니다. 대용량 로그 파일(수 기가 바이트)을 볼 수 있습니다. less에서는 압축된 로그 파일(로 끝남)을 볼 수도 있습니다 .gz.

grep특정 패턴을 필터링하는 데 사용할 수도 있습니다 .

답변3

'head'를 사용하여 첫 번째 줄을 나열하거나 'tail'을 사용하여 파일의 끝을 나열할 수도 있습니다. '머리' 또는 '꼬리' 뒤에 숫자를 추가하면 해당 줄 수를 표시합니다.

앨런

답변4

여기에도 비슷한 문제가 있습니다(JBoss는 아니지만 대용량 로그 파일). 제가 말할 수 있는 것은 "grep이 당신의 친구입니다"라는 것뿐입니다. 귀하의 로그 파일이 다음과 같다고 가정합니다.

Dec 27 08:14:35 hostname kernel: bnx2: eth1 NIC Copper Link is Up, 1000 Mbps full duplex
Dec 27 08:14:35 hostname kernel: eth2: Link is Up 1000 Mbps Full Duplex, Flow Control: None
Dec 27 08:14:35 hostname kernel: eth3: Link is Up 1000 Mbps Full Duplex, Flow Control: None
Dec 27 08:14:36 hostname pcscd: hotplug_libusb.c:402:HPEstablishUSBNotifications() Driver ifd-egate.bundle does not support IFD_GENERATE_HOTPLUG. Using active polling instead.

(이것들은 /var/log/messages 파일에서 가져오지만 모든 항목 앞에는 타임스탬프가 붙는다는 것이 아이디어입니다).

로그 파일이 타임스탬프로 채워져 있다는 점을 고려하면 제가 하는 일은 다음과 유사합니다.

grep '^`date "+%b %d"` 08:14' /my/log/file > /tmp/814amLog.txt

이는 실제로 오늘의 타임스탬프를 찾는 것입니다. 즉,

grep "^Dec 27 08:14" /my/log/file > /tmp/814amLog.txt

그런 다음 814amLog.txt 파일을 less 또는 vim -R로 실행합니다. 아이디어는 관심 있는 한 입 크기의 덩어리로 만드는 것입니다.

첫 번째 응답으로 주어진 분할 명령을 사용할 수 있지만 내 경험상 다소 임의적인 결과를 제공합니다. 보통 나는 "이 시간쯤에" 일어난 일을 찾고 있습니다. 따라서 날짜 및 시간별 grep'ing이 더 자주 사용됩니다.

밤에 로그 파일을 살펴보고 적절한 위치에 저장하도록 크론 작업을 스크립트할 수 있으므로 임시로 수행할 필요가 없습니다. 또한 하루 정도 오래된 압축 로그 파일을 gzip하는 작업을 생성하는 것이 좋습니다. 얼마나 많은 디스크 공간이 절약되는지 놀라게 될 것이기 때문입니다.

관련 정보