요약
10G 짜리 로그에서 특정 에러가 발생한 시점, 전후 로그 상황을 확인할 때 사용
- 명령어 :
grep -n (키워드 문자열) (파일명)
아래는 로그파일: tnslsnr_1519.log 에서 error 라는 문자열을 찾는 예시
[/app/oracle/product/19.3/db_1/log/hora19c/client]$ ls -lah
total 72K
drwxr-x--T. 2 oracle dba 4.0K Jun 12 01:03 .
drwxr-x--T. 3 oracle dba 20 May 6 12:29 ..
-rw-r--r--. 1 oracle dba 4.6K Jun 12 00:41 tnslsnr_1519.log
-rw-r--r--. 1 oracle dba 0 Jun 10 11:32 tnslsnr_1561.log
-rw-r--r--. 1 oracle dba 2.4K Jun 10 11:34 tnslsnr_1585.log
[/app/oracle/product/19.3/db_1/log/hora19c/client]$ grep -n 'error' tnslsnr_1519.log <<<< ✅
3:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
6:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
9:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
12:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
→ 3,6,9,12 Line 에 발생했음을 확인, 아래 이미지는 실제 로그파일을 열어본 결과
참고사항
1) 특정 행 범위에서 키워드 검색하기
파일의 모든 행을 보기 부담스럽거나, 발생 시간대의 행 번호 대역을 추론할 수 있을 때 아래 명령어 사용
- 명령어 : tail -n(행범위) (파일명) | grep -n (키워드문자열)
# 로그파일 log_230623.log 의 상위 6행 중 'error' 키워드가 포함된 행
[/app/oracle/product/19.3/db_1/log/hora19c/client]$ tail -n6 log_230623.log | grep -n 'error'
1:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
4:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
# 로그파일 로그파일 log_230623.log 의 상위 20행 중 'error' 키워드가 포함된 행
[/app/oracle/product/19.3/db_1/log/hora19c/client]$ tail -n20 log_230623.log | grep -n 'error'
1:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
4:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
9:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
12:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
15:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
18:[ default][1206959168]u_set_comp_error: comptype '103' : error '29'
2) 로그라인을 볼 수 있는 $tail (파일명) | cat -n 명령어
$ tail (파일명) | cat -n
명령어로도 비슷한 효과를 볼 수 있으나, 줄바꿈 설정에 따라 정확한 행번호를 보장하지 않을 수 있다.
단 이쪽은 로그라인 전체를 보여준다.
[/app/oracle/product/19.3/db_1/log/hora19c/client]$ tail tnslsnr_1519.log | cat -n
1 2023-06-10 12:23:15.688: [GIPCXCPT][1206959168] gipcConnectSyncF [clscrsconGipcConnect : clscrscon.c : 686]: EXCEPTION[ ret gipcretConnectionRefused (29) ] failed sync connect endp 0x1223550 [000000000000001a] { gipcEndpoint : localAddr 'clsc://(ADDRESS=(PROTOCOL=ipc)(KEY=)(GIPCID=00000000-00000000-0))', remoteAddr 'clsc://(ADDRESS=(PROTOCOL=ipc)(KEY=CRSD_UI_SOCKET)(GIPCID=00000000-00000000-0))', numPend 0, numReady 0, numDone 0, numDead 0, numTransfer 0, objFlags 0x0, pidPeer 0, readyRef (nil), ready 0, wobj 0x11ad740, sendp 0x122ce30 status 13flags 0xa108071a, flags-2 0x0, usrFlags 0x0 }, addr 0x1224170 [000000000000001d] { gipcAddress : name 'clsc://(ADDRESS=(PROTOCOL=ipc)(KEY=CRSD_UI_SOCKET)(GIPCID=00000000-00000000-0))', objFlags 0x0, addrFlags 0x4 }, flags 0x0
2 [ default][1206959168]u_set_comp_error: comptype '103' : error '29'
3 2023-06-10 12:23:15.691: [GIPCXCPT][1206959168] gipcInternalConnectSync: failed sync request, addr 0x1224900 [000000000000002b] { gipcAddress : name 'clsc://(ADDRESS=(PROTOCOL=ipc)(KEY=CRSD_UI_SOCKET)(GIPCID=00000000-00000000-0))', objFlags 0x0, addrFlags 0x4 }, ret gipcretConnectionRefused (29)
4 2023-06-10 12:23:15.691: [GIPCXCPT][1206959168] gipcConnectSyncF [clscrsconGipcConnect : clscrscon.c : 686]: EXCEPTION[ ret gipcretConnectionRefused (29) ] failed sync connect endp 0x1223550 [0000000000000028] { gipcEndpoint : localAddr 'clsc://(ADDRESS=(PROTOCOL=ipc)(KEY=)(GIPCID=00000000-00000000-0))', remoteAddr 'clsc://(ADDRESS=(PROTOCOL=ipc)(KEY=CRSD_UI_SOCKET)(GIPCID=00000000-00000000-0))', numPend 0, numReady 0, numDone 0, numDead 0, numTransfer 0, objFlags 0x0, pidPeer 0, readyRef (nil), ready 0, wobj 0x1220820, sendp 0x122ce30 status 13flags 0xa108071a, flags-2 0x0, usrFlags 0x0 }, addr 0x1224900 [000000000000002b] { gipcAddress : name 'clsc://(ADDRESS=(PROTOCOL=ipc)(KEY=CRSD_UI_SOCKET)(GIPCID=00000000-00000000-0))', objFlags 0x0, addrFlags 0x4 }, flags 0x0
5 [ default][1206959168]u_set_comp_error: comptype '103' : error '29'
6 2023-06-12 00:41:33.793: [GIPCXCPT][1206959168] gipcInternalConnectSync: failed sync request, addr 0x1223850 [000000000000003b] { gipcAddress : name 'clsc://(ADDRESS=(PROTOCOL=ipc)(KEY=CRSD_UI_SOCKET)(GIPCID=00000000-00000000-0))', objFlags 0x0, addrFlags 0x4 }, ret gipcretConnectionRefused (29)
3) vi에서 원하는 라인번호 이동
개인적으로는 grep -n (키워드 문자열) (파일명)
으로 라인번호 몇 개를 수집한 후, vi 로 해당 행 전후를 살펴보며 작업하는 편을 선호한다.
vi로 원하는 행으로 이동하는 방법은 이 포스팅 참고
반응형