 |
logcount -V
logcount -c col -i interval [-F fn,str [-f delim][-w]][-S skiplist][-D][-h][-s start][-e end][-o outfile][-M][-n][-z] [files...]
logcount -G fn -i interval [-d delim] [-F fn,str [-f delim][-w]][-S skiplist][-D][-h][-s start][-e end][-o outfile][-M][-n][-z] [files...]
Options are as follows:
-? print this help
-c col character position
-D delta value instead of value per second
-d delim field delimiter; def: whitespace
-G fn select field; exam) 1 or 2 ...
-h do not print header info
-i interval specify interval (second; minute for -M option)
-F fn,str select field and comparing string
-f delim field delimiter for filtering; def: whitespace
-M value per minute; def: value per second
-n use time format HHMMSS instead of HH:MM:SS in the file
-o outfile file name to save output
-S skiplist list starting word to skip (separated by comma)
-s starttime start time (HH:MM:SS)
-e endtime end time (HH:MM:SS)
-V show version
-v print selected lines only
-w match completely
-z do not print if count is zero
file file names to read; if it is omitted, standard input is used
logcount 명령어는 웹서버와 같이 시간이 기록된 로그 데이타에서
시간대 별로 기록된 데이타의 횟수를 계산해 준다.
이러한 데이타를 Parm에 있는 mkgraph 명령어로 그래프를 그리면, 시간대 별로 얼마나
액세스가 있었는지 쉽게 알 수 있다.
다음은 아파치 웹서버의 로그파일의 내용이다.
203.250.78.28 - - [28/Sep/2002:22:06:08 +0900] "GET /start.htm HTTP/1.1" 200 998
203.250.78.28 - - [28/Sep/2002:22:06:08 +0900] "GET /top.htm HTTP/1.1" 200 2006
203.250.78.28 - - [28/Sep/2002:22:06:08 +0900] "GET /left.htm HTTP/1.1" 200 4896
203.250.78.28 - - [28/Sep/2002:22:06:08 +0900] "GET /board/board.cgi?id=main HTTP/1.1" 200 5066
203.250.78.28 - - [28/Sep/2002:22:06:08 +0900] "GET /image/topimage.gif HTTP/1.1" 200 13553
203.250.78.28 - - [28/Sep/2002:22:06:26 +0900] "GET /board/board.cgi?id=note HTTP/1.1" 200 5066
203.250.78.28 - - [28/Sep/2002:22:06:28 +0900] "GET /board/board.cgi?id=seminar HTTP/1.1" 2 00 5066
203.250.78.28 - - [28/Sep/2002:22:06:29 +0900] "GET /lecture/lectuer.htm HTTP/1.1" 200 13164
203.250.78.28 - - [28/Sep/2002:22:06:29 +0900] "GET /lecture/lecture.gif HTTP/1.1" 200 2704
203.250.78.28 - - [28/Sep/2002:22:06:29 +0900] "GET /image/bullet1.gif HTTP/1.1" 200 81
203.250.78.28 - - [28/Sep/2002:22:06:29 +0900] "GET /image/bullet2.gif HTTP/1.1" 200 182
203.250.78.28 - - [28/Sep/2002:22:06:29 +0900] "GET /index.html HTTP/1.1" 200 182
... skip ...
|
여기서 28/Sep/2002에 /board/board.cgi 불려진 횟수를 30초 간격의 초당 횟수 조사하려면
다음과 같이 할 수 있다.
# grep /board/board.cgi access.log | grep 28/Sep/2002 | logcount -d : -G 2 -o count.log -i 30
# cat count.log
time count
19:57:00 0.1
19:57:30 0.0
19:58:00 0.0
19:58:30 0.2
19:59:00 0.0
19:59:30 0.1
... skip ...
# mkgraph -t 19:57:00 -i 30 -S time -G 2::/board/board.cgi count.log
|
grep 명령어로 /board/board.cgi 를 가지고 있는 라인을 찾아 내고 다시 grep 명령어로 28/Sep/2002 를
가지고 있는 라인을 찾아 내어 logcount 명령어의 입력으로 사용한다.
-G 옵션은 시간 데이타가 있는 컬럼의 위치를 지정한다. -d 옵션은 컬럼의 구분자를 지정한다.
-d 옵션이 지정되지 않으면, white-space(TAB,SPACE)가 구분자로 사용된다.
시간 데이타는 HH:MM:SS 형식으로 되어 있어야 한다.
logcount 명령어는 로그파일에서 시간정보가 있는 위치를 파악하기 위하여 -G 옵션 또는 -c 옵션을
사용한다.
-G 옵션은 시간 데이타가 있는 컬럼의 위치를 지정한다. -G 2를 지정하면
두번째 있는 시작하는 컬럼부터 HH:MM:SS 형식의 데이타를 가져와서
시간으로 분석하여 횟수를 계산한다.
입력파일에 공백라인이 있으면 그 라인은 스킵한다.
logcount 명령어로 가공한 데이타에 대하여 위와 같이 mkgraph 명령어를 실행하면,
현재 디렉토리에 graph.gif라는 GIF 파일 포멧의 그래프를 만든다.
다음은 logcount 명령어의 옵션에 대하여 설명한다.
옵션 | 설명 |
-c col |
-c 옵션은 시간정보(HH:MM:SS)가 있는 위치를 지정한다. 만일 시간이 8 번째 문자에서
시작한다면, -c 8 로 지정한다.
|
-D |
-D 옵션은 지정한 시간 간격의 차이 값을 출력한다.
이 옵션이 지정되지 않으면, 초당 값 또는 분당 값(-M 옵션 사용시)을 출력한다.
|
-G fn -d delim |
-G 옵션은 시간정보가 있는 컬럼의 위치를 지정한다.
-d 옵션으로 컬럼 구분자를 지정하지 않으면, 공백(whitespace) 컬럼 구분자로
사용된다.
|
-h |
-h 옵션은 헤더정보를 출력하지 않게 한다.
|
-i interval |
-i 옵션은 시간 간격을 지정한다.
-M 옵션을 사용하면 interval은 분 단위이고 출력되는 값도 분당 값(value per minute)이 되고,
-M 옵션을 사용하지 않으면 interval은 초 단위이고 출력되는 값도 초당 값(value per second)이다.
|
-M |
-M 옵션은 분당값을 출력하게 한다. -i 옵션에서 사용되는 값은 분 단위이다.
|
-F fn,str -f delim -w |
-F 옵션으로 데이타 파일에서 특정 문자열을 포함한 라인만 선택하여 가공할 수 있다.
-F 옵션에는 선택하려고 하는 문자열과 그 문자열이 포함된 필드를 지정한다.
-F fn,str
만일 -F 2,24/Dec/2002 라고 지정하면, 두번째 필드에서 24/Dec/2002가 포함된 라인만
선택하여 가공한다.
-f 옵션으로 필드 구분자를 지정하지 않으면, 공백(TAB,SPACE)이 필드 구분자가 된다.
-d에서 지정하는 것과 -f 옵션에 지정하는 값은 별개로 동작한다.
예를 들어, 다음과 같은 형식의 데이타가 들어 있다면,
[24/Dec/2002:10:25:13 +0900] connmon[2130]: user 'guest' logined
위의 데이타에서 2002년 12월 24일 데이타에 대해서 가공하고 싶으면, 다음과 같이 할 수 있다.
# logcount -f '[' -F 2,24/Dec/2002 -G 2 -d : data.log
# grep 24/Dec/2002 data.log | logcount -G 2 -d :
|
위의 두개의 명령문들은 같은 결과값을 갖는다.
-F 옵션에서 필드 위치를 0으로 지정하면 전체 라인에 대하여 지정한 문자열이 포함된
라인을 찾아서 처리해 준다.
다음의 두개의 명령어는 동일한 결과를 같는다.
# grep borad.cgi data.log | logcount -G 2 -d :
# logcount -F 0,borad.cgi -G 2 -d : data.log
|
-w 옵션을 지정하면, 지정한 문자열을 조사할 때, 해당되는 필드에 문자열과 정확히
일치되는 라인에 대해서만 처리한다.
-w 옵션이 지정되지 않으면, 그 문자열이 포함되어 있는 라인에 대해서 처리한다.
|
-o outfile |
-o 옵션은 데이타를 가공한 결과를 저장할 파일명을 지정한다. 이 옵션이
지정되지 않으면, 표준출력으로 보낸다.
|
-S skiplist |
-S 옵션은 카운트하는데 필요하지 않은 라인을 지정하여 그 라인을 스킵한다.
지정한 문자열로 시작하는 라인을 스킵한다. 여러 개를 지정할 경우에
","로 분리하여 여러 개를 지정할 수 있다. 예를 들어,
-S ' ,#,Time'
라고 지정하면 스페이스로 시작하는 라인과 '#'으로 시작하는 라인과 Time로
시작하는 라인을 스킵한다.
|
-s starttime |
-s 옵션은 데이타의 결과를 출력할 시작 시간을 지정한다.
이 옵션이 지정되지 않으면, 데이타가 있는 시간부터 출력된다. 만일 실제 데이타는
7시 30분 부터 시작하는데, -s 07:00:00 으로 지정하면 7시 부터 데이타가 출력된다.
데이타가 없는 시간대에는 0 (zero)이 출력된다.
|
-e endtime |
-e 옵션은 데이타의 결과를 출력할 마지막 시간을 지정한다.
|
-n |
-n 옵션을 지정하면 파일에서 시간 형식을 HHMMSS로 인식한다. 이 옵션이 지정되어
있지 않으면 디폴트는 HH:MM:SS 이다.
|
-V |
-V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
|
-v |
-v 옵션은 선택된 라인을 보여준다. -s, -e, -F 옵션으로 데이타를
선택할 수 있는데, 이때 -v 옵션을 사용하면 선택된 라인들을 보여준다.
데이타를 카운트하지는 않는다.
만일 /var/adm/messages 파일에서 특정 시간대의 메세지만 보고 싶다면,
다음과 같이 할 수 있다.
# logcount -v -F "1,Jan 26" -G 3 -s 09:00:00 -e 12:00:00 /var/adm/messages
위의 명령어는 /var/adm/messages에서 1월 26일 09에서 12시 까지 메세지만 화면에 보여준다.
|
-z |
-z 옵션을 지정하면 카운트가 0(zero)인 시간은 출력하지 않는다.
|
file |
데이타를 가지고 있는 파일을 지정한다. 이 파일명을 지정하지 않으면, 표준입력이 사용된다.
|
|