리눅스에서 실시간으로 로그를 확인해야 할때가 있는데 그럴 경우 전 아래의 명령어를 실행합니다.
명령어 : tail -f access.log
실행결과 : 118.34.220.226 - - [07/Apr/2010:14:54:42 +0900] "POST /bbs/delete_all.php HTTP/1.0" 200 121 "http://xxxx.co.kr/xxxx/xxx/xxxx/xxxx/xxx/xxx.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; EmbeddedWB 14.52 from: http://www.xxxxxcom/ EmbeddedWB 14.52; .NET CLR 1.1.4322; InfoPath.2)"
실시간으로 매우 많은 양이 로그에 기록되면서 보여주는데 정말 정신 없습니다-_-;
그래서 awk 명령어도 같이 써줍니다.
awk에 대해선 자세히 모르지만 간단히 설명 드리자면 위의 길고 알아보기 힘든 로그를 필요한 부분만 잘라서 보여주는 기능입니다.
명령어 : tail -f access.log | awk -f" " '{ print $1" : "$6" : "$7}'
실행결과 : 118.34.220.226 : "POST : /bbs/delete_all.php HTTP/1.0"
네 이렇게 깔끔하게 나옵니다. (설명 드릴 포인트에 큰 글씨체와 볼드를 먹였습니다.)
설명을 드리자면 tail -f access.log | awk -f" " '{ print $1" : "$6" : "$7}' 중
tail -f access.log | awk -f" " '{ print $1" : "$6" : "$7}' 처럼 따옴표 안의 공백으로 구분합니다. 즉 위 가공전의 로그에 공백을 구분한다는거죠
tail -f access.log | awk -f" " '{ print $1" : "$6" : "$7}' 로 공백 전의 문자를 찾습니다. 정규식 표현법과 비슷합니다.
$1일 경우 위 가공전 로그의 첮번째인 ip $2,$3일 경우 '-'하이픈, $4일경우 날짜인 '[07/Apr/2010:....'
이런식입니다.
마지막으로 tail -f access.log | awk -f" " '{ print $1" : "$6" : "$7}' 이부분은
118.34.220.226 : "POST : /bbs/delete_all.php HTTP/1.0" 이부분과 같습니다.
'*nix' 카테고리의 다른 글
sed 사용법 (0) | 2010.06.01 |
---|---|
vi 특정문자열 삭제 (0) | 2010.06.01 |
awk 사용법 (0) | 2010.05.17 |
[AIX] 한글 로케일 (0) | 2010.01.20 |
nohup (0) | 2009.12.01 |