dolog

   dolog

  사용법


	dolog -V
	dolog [-L] {[-t] | [-p|-P] [-y]} [{-a | -n}] [{-o outfile [-h] | -O outfile} [-B]]
	dolog [-L] {[-t] | [-p|-P] [-y]} [{-a | -n}] {-o outfile [-h] | -O outfile} [-B] ] command
	dolog [-L] {[-t] | [-p|-P] [-y]} [{-a | -n}] {-o outfile [-h] | -O outfile} [-B] ] -T interval[,conut] command
	dolog [-L] {[-t] | [-p|-P] [-y]} [{-a | -n}] {-o outfile [-h] | -O outfile} [-B] ] -k sec [-i signum] command
	dolog [-L] {[-t] | [-p|-P] [-y]} [{-a | -n}] {-o outfile [-h] | -O outfile} [-B] ] -r n command

	Options are as follows:

	-?                   print this help
	-a                   append command output to outfile
	-B                   run in the background as a daemon
	-h                   create file name according to hour
	-i signum            specify signal number; default:15 (SIGTERM)
	-k sec               kill the process after sec seconds
	-L                   check LANG environment variable. def: LANG=C
	-n                   make a new file with sequence number each time
	-O outfile           output file name: time info is not added to outfile
	-o outfile           output file name: outfile.yymmdd[.HHMMSS[.interval]]
	                         if -a option is used, outfile.yymmdd
	                         if -a and -h option is used, outfile.yymmdd.hh
	                         if -T option is used, outfile.yymmdd.HHMMSS.interval
	                     otherwise, outfile.yymmdd.HHMMSS
	-p                   prefix time
	-P                   prefix date and time
	-r n                 run command n times
	-T interval[,count]  specify interval and count
	                         interval   time interval (seconds)
	                         count      times to get the info, default: forever
	-t                   don't add date/time info to output file
	-y                   put time information at each line
	-V                   show version

	EX) # dolog -o net -T 10,60 netstat -i

	         output file name: net.021101.183000.10
  설명

시스템의 상태를 모니터하기 위하여 특정 명령어들을 사용하여 데이타를 수집하고, 그것을 분석한다. 이때 명령어들을 일정 시간 간격으로 실행하거나, 실행한 시간과 파일명을 일관성 있게 저장할 필요가 있다. dolog 명령어는 이러한 것을 쉽게 할 수 있도록 도와 준다.

dolog 명령어는 지정한 명령어를 일정 시간 간격으로 지정한 횟수 만큼 실행하여 그 결과(표준출력과 표준오류)를 파일에 저장한다. 저장할 파일명은 -o 옵션으로 지정하는데, 실제 만들어지는 파일명에는 지정한 이름에 yymmdd[.HHMMSS[.interval]] 형식의 날짜와 시간 , 시간 간격이 추가된다. -o 옵션으로 파일명을 지정하지 않으면, 표준출력(standard output)으로 명령어의 결과가 출력된다. -T 옵션을 지정하지 않으면 한번만 실행한다.

다음은 "df -k" 명령어를 60초 간격으로 100번 실행하는 예제이다.

# dolog -o df -T 60,100 df -k
# ls
df.021124.182517.60

생성되는 파일명은 df.021124.182517.60 다음과 같다.

getdata 명령어로 데이타를 수집하지 않고, 간단히 vmstat 명령어를 실행하여 그 결과를 그래프로 그리고 싶을 경우 다음과 같이 할 수 있다.

# dolog -o vmstat.30 vmstat 30 60
# ls
vmstat.30.021205.164122
# gvmstat -t 164122 -i 30 vmstat.30.021205.164122

위와 같이 -o 옵션에 vmstat.30 를 지정하면 vmstat 명령어를 30 초 간격으로 실행했다는 것을 알 수 있을 것이고 실행한 날짜와 시간은 그 파일명에 추가된다.

다음과 같이 아무런 옵션 없이 실행하면, 명령어를 실행한 시간을 화면에 출력하는 효과가 있다.

# dolog swap -l
# DATE 2003/01/04 14:29:32
swapfile             dev  swaplo blocks   free
/dev/dsk/c0t2d0s1   32,17     16 524384 490496

다음은 dolog 명령어에 -a 옵션을 사용하여 "df -k /" 명령어를 세번 실행한 명령어의 결과이다.

# dolog -a -o df df -k /
# sleep 2
# dolog -a -o df df -k /
# sleep 2
# dolog -a -o df df -k /
# ls
df.181124
# cat df.181124
# DATE 2002/11/04 14:45:48
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t2d0s0    1758462 1621623   84086    96%    /
# DATE 2002/11/04 14:45:50
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t2d0s0    1758462 1621623   84086    96%    /
# DATE 2002/11/04 14:45:52
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t2d0s0    1758462 1621623   84086    96%    /

출력될 파일명에 오늘 날짜가 추가된다. 만일 여러 번 실행하는 도중에 날짜가 바뀌면 새로운 날짜가 추가된 파일명을 새로 만든다.

만일 1 시간마다 "df -k" 명령어는 실행하여 그 결과를 날짜 별로 저장하고 싶다면 다음과 같이 cron 테이블에 등록할 수 있다.

0 * * * * /opt/JSparm/bin/dolog -a -o /data/df-daily.log df -k

dolog 명령어에 실행할 명령어를 지정하지 않으면 표준입력을 읽어서 저장한다.

# ls -l | dolog -o ls-l.log
# ls -l ls-l.log*
-rw-r--r--   1 guest    other       1395 Jan 17 20:20 ls-l.log.120117.202007

다음은 dolog 명령어의 옵션에 대한 설명이다.

옵션설명
-a -a 옵션은 실행한 명령어의 결과를 파일에 추가한다. -o 옵션에 지정된 이름에 yymmdd 형식으로 날짜 정보가 파일명에 추가된다. 즉, -a 옵션을 사용하면 매 시간 간격마다 시스템 날짜를 조사하여 날짜에 맞는 파일명에 출력을 저장한다.
-h 옵션을 함께 사용하면, yymmdd.HH 형식으로 날짜 정보가 파일명에 추가된다. 매 시간 간격마다 시스템 날짜를 조사하여 해당되는 날짜와 시간(hour)에 맞는 파일명에 데이타를 추가한다.
-B -B 옵션을 지정하면 백그라운드에서 데몬 프로세스로 실행한다.
사용자가 명령어를 실행한 터미날에서 빠져 나와도 프로세스는 종료되지 않고 계속 실행된다.
-h -a 옵션 참조
-i signum -k 옵션을 지정하면, 지정된 시간이 지나면 프로세스에게 SIGTERM(signal number 15) 시그널을 보내서 종료시킨다. signal 15번이 아닌 다른 시그널을 보내고 싶을 경우에 -i 옵션을 시그널 번호를 지정할 수 있다. -i 옵션을 지정하면, 프로세스가 종료되지 않아도 추가적인 SIGKILL 시그널을 보내지 않는다.
-k -k sec 옵션은 지정한 명령어를 실행한 뒤 sec 초 지난 후에 그 프로세스를 종료시킨다.
처음에는 그 프로세스에게 SIGTERM 시그널을 보내고, 그 프로세스가 종료되지 않으면 SIGKILL 시그널을 3초 후에 한번 더 보낸다.
-i 옵션을 지정한 경우 추가적인 SIGKILL 시그널을 보내지 않는다.
-L -L 옵션은 LANG 환경변수를 조사하여 사용한다. 이 옵션이 지정되지 않으면, LANG=C 로 프로그램 내부에서 설정한다.
-n -n 옵션을 지정하면 매번 명령어를 실행할 때마다 실행하는 횟수를 출력파일명에 추가한다. 다음은 생성되는 파일명을 보여주는 예제이다.

# dolog -n -r 3 -o vm.log vmstat 1 10 
# ls
vm.log.050206.002229.001
vm.log.050206.002238.002
vm.log.050206.002247.003

-o -o 옵션은 명령어의 출력을 저장할 파일명을 지정한다. 실제 만들어지는 파일명에는 지정한 이름에 yymmdd[.HHMMSS[.interval] 형식의 이름이 추가된다.

-a 옵션이 지정되면 yymmdd 형식의 이름이 추가되고,
-a 옵션과 -h 옵션이 동시에 지정되면 yymmdd.HH 형식의 이름이 추가되고, -T 옵션으로 지정되면 yymmdd.HHMMSS.interval 형식의 이름이 추가되고,
그렇지 않으면 yymmdd.HHMMSS 형식의 이름이 추가된다.

-o 옵션이 지정되지 않으면 표준출력으로 출력한다.

-O -O 옵션으로 출력 파일명을 지정하면, 파일명 그대로 만든다. 파일명에 시간정보를 포함시키지 않는다.
-p -p 옵션을 사용하면 시간정보를 출력물의 첫번째 라인 앞에 붙인다.
-P -P 옵션을 사용하면 날짜와 시간정보를 출력물의 첫번째 라인 앞에 붙인다.
-r n -r n 옵션은 지정한 명령어를 n 번 실행한다.
-T interval,count interval은 데이타를 수집할 시간 간격(단위: 초)을 지정하고, count는 데이타를 수집할 횟수를 지정한다. count가 지정되지 않으면 무한히 반복한다.
count 숫자 뒤에 h 또는 m 문자가 올 수 있는데, h가 오면 count의 값이 데이타를 수집할 시간(hour)으로 간주하고, m이 오면 분(minute)으로 간주한다.
다음의 세가지는 모두 같은 횟수 만큼 데이타를 수집한다. -T 10,1h   -T 10,60m   -T 10,360
-T 옵션을 지정하지 않으면, 한번만 실행한다.

데이타를 수집할 때, 지정한 시간 간격으로 명령어를 실행하여 데이타를 수집한다. 그런데 지정한 시간 간격이 지나도 앞에 실행했던 명령어가 종료되지 않았으면, 그 시간대의 데이타는 수집하지 않고 다음 데이타 수집 시간에 데이타를 수집한다.

-t -t 옵션을 지정하지 않으면, 매번 데이타를 수집할 때마다 다음과 같은 형식의 라인을 출력파일에 넣는다. # DATE yyyy/mm/dd HH:MM:SS 예) # DATE 2002/11/26 18:03:51

-t 옵션을 지정하면, 위의 내용을 출력파일에 넣지 않는다.

-y -y 옵션을 사용하면 출력물의 각 라인 앞에 시간정보를 출력한다. <-P> 옵션을 같이 사용하면 날짜와 시간정보를 각 라인 앞에 출력한다.

# dolog -y vmstat 1
00:17:55  procs     memory            page            disk          faults      cpu
00:17:55  r b w   swap  free  re  mf pi po fr de sr dd dd f0 s1   in   sy   cs us sy id
00:17:55  0 0 0 745448 198680  0  50  7  0  0  0  0  1  1  0  0  324  627  138  3  1 95
00:17:56  0 0 0 739240 186336  0   3  0  0  0  0  0  0  0  0  0  304  255   94  1  0 99
00:17:57  0 0 0 739240 186336  0   0  0  0  0  0  0  0  0  0  0  311  244   93  0  0 100
00:17:58  0 0 0 739240 186336  0   0  0  0  0  0  0  0  0  0  0  410  349  123  1  1 98
00:17:59  0 0 0 739240 186336  0   0  0  0  0  0  0  0  0  0  0  414  364  124  0  0 100

-V -V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.