IT BT NANO MICRO
10 50 40 30
20 50 40 30
20 40 60 30
20 40 60 30
70 40 60 30
70 40 40 50
40 20 40 50
40 20 80 50
40 90 80 50
20 90 80 50
20 90 80 50
|
# mkgraph -1 sum -e 5 -h 100 -H data.out
|
-1 sum 옵션을 지정하면 하나의 그래프에 컬럼 1,2,3,4에 데이타를 순서대로 합하여 그래프를
만든다. 이 그래프를 sum 단일 그래프라고 명명한다.
IT의 값은 파란선의 높이이고, BT의 값은 빨간선에서 파란선의 높이를 뺀 값이 되고,
NANO의 값은 초록선에서 빨간선의 높이를 뺀 값이 되고,
MICRO의 값은 노란선에서 초록선의 높이를 뺀 값이 된다.
선의 색을 설명하는 부분에 '+' 표시가 있다. 이 표시가 있는 것은 sum 단일 그래프을 의미한다.
| |
# mkgraph -1 each -S IT -e 5 -h 100 -G 1=IT,2=BT,3=NANO,4=MICRO data.out
|
-1 each 옵션을 지정하면 하나의 그래프에 컬럼 1,2,3,4에 데이타를 각각 그래프를
만든다. 이 그래프를 each 단일 그래프라고 명명한다.
각각의 선에 나타나는 값이 각 데이타의 실제 값이다.
선의 색을 설명하는 부분에 '+' 표시가 없다. 이 표시가 없는 것은
each 단일 그래프을 의미한다.
| |
4.9 mkchart
mkchart
명령어는 입력 파일을 읽어서 지정한 컬럼에 있는 값에 대하여 막대 그래프를 그려서
GIF 포멧의 파일을 만들어 준다.
다음과 같은 내용을 가진 data 파일이 있다. 이파일을 가지고 mkchart 명령어를 설명한다.
web1 30 18 35 28
web2 35 24 69 30
web3 25 20 48 30
web4 25 26 39 28
web5 28 30 50 20
web6 22 19 40 18
was1 40 25 70 29
was2 25 22 33 22
dbserv1 10 9 24 15
dbserv2 23 15 55 20
|
# mkchart -N 1 -G 2:user,3:kernel data
|
|
mkchart 명령어에 -N 옵션을 사용하여 막대 그래프에 대한 이름 부분을 가지고 있는 필드를 지정할 수 있다.
지정된 필드의 내용이 막대 그래프의 아랫쪽에 쓰여진다.
|
4.10 dolog
시스템의 상태를 모니터하기 위하여 특정 명령어들을 사용하여 데이타를 수집하고,
그것을 분석한다. 이때 명령어들을 일정 시간 간격으로 실행하거나,
실행한 시간과 파일명을 일관성 있게 저장할 필요가 있다.
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 df df -k
|
4.11 tsinfo
tsinfo 명령어는 프로세스에 있는 각각의 쓰레드에 대한 정보를 보여준다.
옵션을 지정하지 않으면 CPU를 많이 사용하는 순서로 20개의 쓰레드 정보를 보여준다.
# tsinfo
PID USERNAME LWPID NLWP CLS PRI S WCPU% CPU% ELAPSED TIME SYSCALL CMDLINE 0425.01:36:24
308 guest 1 1 IA 59 S 3.34% 3.34% 0d43688 04:10.6690 poll senddata
411 guest 1 7 IA 59 S 1.76% 1.76% 0d43659 39.8512 poll dtwm
3941 guest 1 1 IA 59 O 0.53% 0.53% 0d0 00.1101 read tsinfo
415 guest 1 1 IA 59 S 0.25% 0.25% 0d43653 54.2000 poll check_sys
519 guest 1 1 IA 59 S 0.21% 0.21% 0d38966 01:58.1173 poll netscape
3 root 1 1 SYS 59 S 0.06% 0.06% 0d43712 24.2534 [SYS] fsflush
432 guest 1 1 IA 59 S 0.05% 0.05% 0d43649 01.1522 waitsys /usr/bin/ksh
366 guest 1 1 IA 59 S 0.04% 0.04% 0d43667 02.2148 poll htt_server
310 root 5 12 TS 58 S 0.01% 0.01% 0d43685 10.4212 lwp_sema_wait mibiisa -r -p 32796
310 root 9 12 TS 58 S 0.01% 0.01% 0d43685 02.9419 lwp_sema_wait mibiisa -r -p 32796
0 root 1 1 SYS 59 T 0.00% 0.00% 0d43715 00.3342 [SYS] sched
1 root 1 1 TS 59 S 0.00% 0.00% 0d43712 00.0827 pause /etc/init -
... skip ...
|
-M 옵션을 지정하면, 시스템에서 실행되고 있는 쓰레드들을 조사하여 WCPU%가 90%(-W 옵션으로 변경 가능) 이상인
쓰레드를 찾아서, 그 중에서 최대 20개(-t 옵션으로 변경 가능)를
1 초(-T 옵션으로 변경 가능) 동안 해당 쓰레드들이 CPU를 사용한 시간(D-TIME 컬럼에 표시됨)과
시스템 콜을 호출한 횟수(NSTSCALL 컬럼에 표시됨)를 조사하여,
CPU를 사용한 시간이 큰 순서로 출력한다.
이때, CPU를 사용한 시간이 없는 쓰레드 정보는 출력하지 않는다.
# tsinfo -M
2012/02/10 19:18:42 traced 1 thread for 1 second
PID USERNAME LWPID NLWP CLS PRI S WCPU% CPU% ELAPSED TIME SYSCALL D-TIME NSYSCALL CMDLINE
5401 guest 3 10 TS 11 R 98.96% 98.96% 0d142 02:20.8498 [USER_MODE] 0.9884 0 send_data -p 1000
|
D-TIME 컬럼은 해당 쓰레드가 CPU를 사용한 시간을 표시한다.
NSYSCALL 컬럼은 해당 쓰레드가 시스템 콜을 호출한 횟수를 표시한다.
"Tracing 1 thread" 에서 1 이 의미하는 것은 WCPU%가 90 이상인 쓰레드가 1개 있다는 것을 의미한다.
send_data 프로세스의 쓰레드 ID가 3인 쓰레드는 1 초 동안 CPU를 00.9867 초를 사용하였데, 시스템 콜을 호출한 횟수는 0 이다.
이 쓰레드는 사용자 코드에서 CPU를 무한히 사용하는 무한 루프에 빠져 있는 것 처럼 보인다.
1 초 라는 시간은 좀 짧은 시간 같아서, 5 초 동안 쓰레드를 다시 모니터한 결과는 다음과 같다.
# tsinfo -M -T 5
Tracing 1 thread for 5 seconds ..., 2012/02/10 19:19:00
PID USERNAME LWPID NLWP CLS PRI S WCPU% CPU% ELAPSED TIME SYSCALL D-TIME NSYSCALL CMDLINE
5401 guest 3 10 TS 40 R 98.84% 98.84% 0d160 02:38.3011 [USER_MODE] 4.8781 0 send_data -p 1000
|
send_data 프로로세스의 3번 쓰레드를 5 초 동안 모니터 하여도 시스템 콜을 전혀 호출하지 않고 CPU만 계속해서 사용했다.
(5 초 동안 4.8781초를 혼자서 사용했음)
5 초 동안 시스템 콜을 호출하지 않았다고, 그 쓰레드가 무한 루프에 빠져 있다고 100% 장담할 수는 없지만
거의 대부분이 무한 루프에 빠져 있다고 볼 수 있다. (잘 못 된 코딩에 의한 버그라고 판단되어 진다)
좀 더 자세히 분석하려면, 다음과 같이 procinfo 명령어를 사용하여
해당 쓰레드를 좀 더 관찰할 수 있다.
다음은 프로세스 ID 5401 번의 쓰레드 ID 3 번에 대한 동작을 추적하였다.
# procinfo -p 5401 -l -L 3 5
CMDLINE: send_data -p 1000
PID USERNAME S LWPID NLWP WCPU% CPU% ELAPSED D-WCPU% D-CPU% D-UTIME D-STIME CTX iCTX RW SYSCALL SYSCALL-NAME 0424.22:24:53
5401 guest R 3 10 94.03% 94.03% 0d254 99.10% 99.10% 4.9549 0.0000 83.4 83.4 0.000K 0.0 [USER_MODE]
5401 guest R 3 10 95.10% 95.10% 0d259 99.14% 99.14% 4.9573 0.0000 84.2 84.2 0.000K 0.0 [USER_MODE]
5401 guest R 3 10 95.83% 95.83% 0d264 98.62% 98.62% 4.9310 0.0000 80.2 80.2 0.000K 0.0 [USER_MODE]
5401 guest R 3 10 96.53% 96.53% 0d269 99.15% 99.15% 4.9576 0.0000 78.2 78.2 0.000K 0.0 [USER_MODE]
5401 guest R 3 10 97.03% 97.03% 0d274 98.87% 98.87% 4.9354 0.0000 77.3 77.3 0.000K 0.0 [USER_MODE]
5401 guest R 3 10 97.46% 97.46% 0d279 99.05% 99.05% 4.9524 0.0000 83.8 83.8 0.000K 0.0 [USER_MODE]
5401 guest R 3 10 97.81% 97.81% 0d284 99.11% 99.11% 4.9556 0.0000 84.4 84.4 0.000K 0.0 [USER_MODE]
5401 guest R 3 10 98.11% 98.11% 0d289 99.24% 99.24% 4.9620 0.0000 84.2 84.2 0.000K 0.0 [USER_MODE]
|
위의 procinfo 명령어의 결과에서 보듯이 이 쓰레드는 CPU 만 계속 사용하고,
시스템 콜은 전혀 호출되지 않는다.
(procinfo 명령어에서 SYSCALL 컬럼에 있는 값은 초당 시스템 콜을 호출한 횟수이다.)
-M 옵션을 이용하면 비정상적으로 동작하는 쓰레드를 쉽게 찾을 수 있다.
비정상적 쓰레드에는 2 가지 종류가 있다.
첫번째, 모니터하는 시간 동안 CPU를 거의 다 사용하면서 시스템 콜을 전혀 호출하지 않는 쓰레드
두번째, 모니터하는 시간 동안 CPU를 거의 다 사용하면서 오류가 난 시스템 콜을 무한 반복 호출하는 쓰레드
4.12 procinfo
procinfo
명령어는 지정한 시간 간격(디폴트 5초) 동안에
active한 프로세스를 찾아내어, 그중에서 CPU를 많이 사용한 순서(D-WCPU%)로
상위 20개의 프로세스에 대한 정보를 보여준다.
중간에 종료된 프로세스에 대한 정보는 나타나지 않는다.
여기서 active한 프로세스란 CPU를 사용한 프로세스를 말한다.
active한 프로세스는 다음과 같은 것으로 알 수 있다.
- 그 시간 간격 동안에 시스템 콜이 있었던 프로세스
또는
어떤 프로세스가 CPU를 차지하고 실행되어도 그 CPU를 one tick(1/100초) 이상 사용하지 않으면
CPU 사용시간은 증가되지 않는다. 따라서 시스템 콜이 여러번 발생한 프로세스라도 CPU 사용시간이
0(zero) 일 수 있다.
또한 시스템 콜이 하나도 없어도 CPU 사용시간이 증가할 수 있다.
이러한 프로세스는 사용자 모드에서 무한 루프에 빠져있다고 볼 수 있다.
CPU 사용시간이 0이고 시스템 콜도 0이면 그 프로세스는 그 시간 간격 동안 아무런 동작도
하지 않은 프로세스이다. 이러한 프로세스는 procinfo 명령어의 출력에 나타나지 않는다.
다음은 5초 동안에 active한 프로세스에 대한 정보를 보여준다.
# procinfo -f
PID USERNAME SIZE RSS S NLWP WCPU% CPU% ELAPSED D-WCPU% D-CPU% D-UTIME D-STIME CTX iCTX RW SYSCALL CMD 0424.22:34:53
1381 guest 279.9M 166.6M R 9 0.29% 0.15% 34d1662 1.34% 0.67% 0.0732 0.0008 18.0 1.6 0.104K 67.5 thd-bin
895 guest 417.9M 337.7M R 1 1.84% 0.92% 34d2205 0.48% 0.24% 0.0261 0.0006 7.3 0.9 4.366K 29.2 Xorg
3 root 0.000M 0.000M O 1 0.38% 0.19% 34d2242 0.38% 0.19% 0.0000 0.0211 0.9 0.0 0.000K 0.0 fsflush
1271 guest 96.25M 15.60M R 1 0.13% 0.07% 34d2001 0.12% 0.06% 0.0064 0.0004 6.2 1.8 2.571K 27.6 mixer_applet2
1178 guest 178.4M 59.47M R 2 0.21% 0.11% 34d2008 0.09% 0.05% 0.0047 0.0005 4.4 2.4 3.824K 11.6 gnome-terminal
1077 guest 12.26M 9.875M S 1 0.04% 0.02% 34d2018 0.03% 0.02% 0.0016 0.0005 3.1 0.0 3.683K 23.8 gconfd-2
1265 guest 69.73M 13.26M S 1 0.03% 0.02% 34d2003 0.03% 0.02% 0.0016 0.0004 2.5 0.9 0.184K 10.9 gnome-netstatus
1174 guest 188.1M 59.00M S 1 0.04% 0.02% 34d2009 0.03% 0.02% 0.0012 0.0005 3.1 0.0 1.543K 22.9 gnome-panel
1302 guest 242.1M 66.11M R 18 0.03% 0.02% 34d1994 0.02% 0.01% 0.0007 0.0007 21.4 2.4 0.005K 49.7 java
2140 guest 2.816M 2.043M O 1 0.03% 0.02% 0d6 0.02% 0.01% 0.0002 0.0011 0.2 0.0 10.07K 64.0 procinfo
1000 noaccess 190.3M 128.2M R 18 0.01% 0.01% 34d2195 0.02% 0.01% 0.0007 0.0004 5.6 0.0 0.000K 15.4 java
|
4.13 proctime
proctime 명령어는 지정한 시간 간격(디폴트 5초) 동안에
-p 옵션에서 지정한 프로세스에 대하여 CPU를 사용한 시간 및 sleep 시간에 대한 자세한 정보를 보여준다.
# proctime -p 6674
PID USERNAME NLWP S D-WCPU% D-CPU% SCALL CS SIG ELAPSED USR SYS TRP FLT LCK LAT STP SLP COMMAND
6674 root 15 S 0.00% 0.00% 0 0 0 43d86289 0.0 0.0 0.0 0.0 53.3 0.0 0.0 46.7 /usr/sbin/syslogd
|
4.14 jsyscall
jsyscall
명령어는 Solars 10 버전에서 제공하는 dtrace 명령어를 이용하여 시스템 콜 정보를
조사하여, CPU를 제일 많이 사용한 순서로 보여준다.
다음은 jsystem 명령어의 사용 예제이다.
# /opt/JSparm/bin/jsyscall -a -t 2
Tracing... for 2 seconds
:: For all processes
:: Date: 2010 Feb 5 13:17:06
:: Elapsed: 2.109
SYSCALL CPU-TIME_AVG COUNT CPU-TIME ELAPSED-TIME
pollsys 0.000005559 158 0.000878407 22.314550527
ioctl 0.000000669 656 0.000439141 0.001418860
stat64 0.000007267 38 0.000276180 0.000306580
writev 0.000006309 28 0.000176672 0.000200128
write 0.000009035 19 0.000171679 0.000199759
read 0.000001979 84 0.000166298 0.000244512
lstat64 0.000005389 29 0.000156282 0.000178254
resolvepath 0.000010403 10 0.000104030 0.000112115
mmap 0.000050442 1 0.000050442 0.000052521
getdents64 0.000005944 6 0.000035666 0.000039876
lwp_cond_wait 0.000003002 11 0.000033029 3.071852642
brk 0.000003117 10 0.000031179 0.000041234
p_online 0.000000121 256 0.000030991 0.000229486
lwp_park 0.000002289 13 0.000029768 3.054807326
fsat 0.000009750 3 0.000029251 0.000031786
schedctl 0.000022588 1 0.000022588 0.000024125
setitimer 0.000000375 53 0.000019920 0.000063076
yield 0.000001870 10 0.000018708 0.000826615
sigaction 0.000000486 25 0.000012170 0.000034730
lwp_sigmask 0.000000959 12 0.000011519 0.000022457
setcontext 0.000001655 6 0.000009931 0.000014691
lwp_cond_signal 0.000002717 3 0.000008151 0.000011780
getitimer 0.000000313 21 0.000006577 0.000022865
close 0.000001499 3 0.000004499 0.000006533
gtime 0.000000248 17 0.000004232 0.000016694
fstat64 0.000000836 3 0.000002508 0.000004628
fstat 0.000001025 2 0.000002051 0.000004558
pset 0.000000785 2 0.000001571 0.000003138
fcntl 0.000000334 3 0.000001004 0.000003243
sysconfig 0.000000311 3 0.000000935 0.000004198
getpid 0.000000708 1 0.000000708 0.000001967
nanosleep 0.000000000 1 0.000000000 0.000000000
TOTAL 0.000001838 1488 0.002736087 28.445330904
|
4.15 jsyserr
jsyserr
jsyserr 명령어는 Solars 10 버전에서 제공하는 dtrace 명령어를 이용하여,
다음과 같이 오류가 발생한 시스템 콜에 대한 errno 번호 별로 발생한 횟수를 출력한다.
# /opt/JSparm/bin/jsyserr -a -t 5
Tracing... for 5 seconds
:: For all processes
:: For system call: ALL
:: Date: 2011 Sep 23 20:09:19
:: Elapsed: 5.001
SYSCALL ERRNO COUNT DESC
ioctl 2 510 ENOENT - No such file or directory
p_online 22 255 EINVAL - Invalid argument
read 11 4 EAGAIN - Resource temporarily unavailable
pollsys 4 4 EINTR - interrupted system call
lwp_park 62 1 ETIME - timer expired
lwp_cond_wait 62 1 ETIME - timer expired
ioctl 22 1 EINVAL - Invalid argument
TOTAL - 776
|
4.16 jmeminfo
jmeminfo
명령어에 옵션을 지정하지 않고 실행하면 다음과 같이 시스템의 가상 메모리와 물리적 메모리 사용량을
보여준다.
# /opt/JSparm/bin/jmeminfo
VMem: 16375M: alloc 2825.M (17.2%), reserv 205.4M (1.2%), free 11331M (69.1%), other 2013.M (12.5%)
PMem: 8183.M: user 2937.M (36.0%), kernel 989.3M (12.0%), free 4256.M (52.0%)
misc: Shmem: 600.0M (3), TmpFS: 1618.M (3), SWAPdev: 0.000M (1), RamDisk: 0.000M (0)
|
-K 옵션을 사용하면, 커널 캐쉬 메모리 중에 사용량이 많은 순서로 상위 20개 정보를 볼 수 있다.
# jmeminfo -K
VMem: 16375M: alloc 1136.M (6.9%), reserv 203.0M (1.2%), free 7873.M (48.0%), other 7161.M (43.9%)
PMem: 8183.M: user 1721.M (21.2%), kernel 6136.M (74.9%), free 325.2M (3.9%)
misc: Shmem: 0.000M (0), TmpFS: 102.5M (3), SWAPdev: 0.000M (1), RamDisk: 0.000M (0)
---------------------------------------------------------------------------------------
kmem_cache buf_size buf_inuse buf_total mem_inuse alloc fail
---------------------------------------------------------------------------------------
zio_data_buf_131072 131072 18636 32720 4090.M 353847 0
kmem_va_4096 4096 205350 205376 802.2M 385035 0
kmem_va_16384 16384 16314 16320 255.0M 17009 0
zio_buf_16384 16384 16151 16264 254.1M 298920 0
dnode_t 656 143207 144624 94.15M 175747 0
kmem_alloc_4096 4096 23652 24036 93.89M 6606478 0
zio_buf_512 512 155306 156032 76.18M 1430848 0
kmem_oversize - - - 73.72M 182 0
kmem_va_28672 28672 649 2328 72.75M 12138 0
rnode4_cache 968 215 70488 68.83M 70854 0
dmu_buf_impl_t 192 225370 275961 51.33M 934080 0
vn_cache 240 137139 187110 48.72M 19681035 0
kmem_alloc_256 256 6570 159210 41.46M 18821862 0
rnode_cache 656 62013 62016 40.37M 62158 0
anon_cache 48 291178 856212 39.81M 1066069518 0
arc_buf_hdr_t 168 172356 186552 30.36M 1313864 0
kmem_alloc_112 112 164060 253296 27.48M 8296554 0
zio_data_buf_20480 20480 1083 1181 23.06M 38344 0
kmem_va_8192 8192 2900 2912 22.75M 5255 0
kmem_alloc_512 512 457 46096 22.50M 16945633 0
|
4.17 netinfo
netinfo 명령어는 네트웍 인터페이스의 정보를 수집하여 보여준다.
다음은 10초 간격으로 3 번 네트웍 인터페이스 정보를 수집하는 예제이다.
# netinfo -x 10 3
# Date.time 1107.002055 interval 10
Name I-pkts I-data I-errs O-pkts O-data O-errs Collis 00:21:05
lo0 0.0 - - 0.0 - - -
hme0 219.0 323.5K 0 116.8 6.317K 0 0
Name I-pkts I-data I-errs O-pkts O-data O-errs Collis 00:21:15
lo0 0.0 - - 0.0 - - -
hme0 219.2 323.5K 0 116.6 6.322K 0 0
Name I-pkts I-data I-errs O-pkts O-data O-errs Collis 00:21:25
lo0 0.0 - - 0.0 - - -
hme0 219.5 323.5K 0 116.6 6.336K 0 0
|
솔라리스 운영체제는 로컬 인터페이스에 대한 데이타 양에 대한
정보는 제공하지 않기 때문에 로컬 로컬 인터페이스에 대한 데이타 양은 표시되지 않는다.
4.18 tcpinfo
tcpinfo 명령어를 실행하면, TCP 와 관련된 정보를 다음과 같이 보여준다.
# tcpinfo 1 5
# Date.time 0819.145759 interval 1
Time CurEs AOpen POpen +DrpQ +DrpQ0 +DrpR ISeg OSeg IData OData +RSeg +RData +Rst_a +Rst_e +Rst_o
14:58:00 5 0.0 0.0 0 0 0 3.0 6.0 0.141K 0.141K 0 0.000K 0 0 0
14:58:01 5 0.0 0.0 0 0 0 4.0 7.0 0.141K 0.188K 1 0.000K 0 0 0
14:58:02 7 1.0 1.0 0 0 0 29.0 35.0 4.888K 4.888K 0 0.000K 0 0 0
14:58:03 5 0.0 0.0 0 0 0 8.0 7.0 0.194K 0.092K 0 0.000K 0 1 1
14:58:04 5 0.0 0.0 0 0 0 0.0 0.0 0.000K 0.000K 0 0.000K 0 0 0
|
4.19 imglist
imglist 명령어는 mkgraph 명령어나 기타 명령어로 만든 그래프 파일들을
HTML 페이지로 한번에 볼 수 있도록 HTML 테그로 만들어 표준출력에 출력한다.
이 내용을 파일로 받아 웹으로 볼 수 있다.
# imglist vm.gif mp.gif
image list
# imglist *.gif > all_graph.html
# imglist -B /tmp vm.gif
image list
# imglist -l sys1.html sys2.html
image list
|
|
# imglist csw.gif ithr.gif syscl.gif > test.html
[test.html]
# imglist csw.gif "=Interrupt" ithr.gif syscl.gif > test2.html
[test2.html]
# cat pic.txt
csw.gif
ithr.gif
syscl.gif
# imglist -f pic.txt > test3.html
[test3.html]
|
|
4.20 jhexdump
jhexdump 명령어는 지정한 파일에 대해 다음과 같이 그 내용을 16 진수와 문자로 화면에 보여준다.
# jhexdump /usr/bin/ps
00000000 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 .ELF............
00000010 00 02 00 02 00 00 00 01 00 01 08 f4 00 00 00 34 ...............4
00000020 00 00 11 20 00 00 00 00 00 34 00 20 00 06 00 28 ... .....4. ...(
00000030 00 1a 00 19 00 00 00 06 00 00 00 34 00 01 00 34 ...........4...4
00000040 00 00 00 00 00 00 00 c0 00 00 00 c0 00 00 00 05 ................
00000050 00 00 00 00 00 00 00 03 00 00 00 f4 00 00 00 00 ................
00000060 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 04 ................
00000070 00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 00 ................
00000080 00 00 00 00 00 00 0d d8 00 00 0d d8 00 00 00 05 ................
00000090 00 01 00 00 00 00 00 01 00 00 0d d8 00 02 0d d8 ................
000000a0 00 00 00 00 00 00 02 30 00 00 03 78 00 00 00 07 .......0...x....
000000b0 00 01 00 00 00 00 00 02 00 00 0e e8 00 02 0e e8 ................
000000c0 00 00 00 00 00 00 00 b8 00 00 00 00 00 00 00 07 ................
000000d0 00 00 00 00 6f ff ff fb 00 00 00 00 00 00 00 00 ....o...........
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 ................
... skip ...
|
jhexdump는 디폴트로 한줄에 16 바이트의 데이타를 바이트 별로 왼쪽에는 16진수로 오른쪽에는
문자로 표시한다. 출력가능한 코드(printable code)가 아닌 것은 .(dot)로 표시한다.
4.21 jtab
jtab 명령어는 구분자로 분리된 데이타를 읽어서 HTML의 형식으로 table을 출력한다.
입력 파일명을 지정하지 않으면 표준입력이 사용된다.
다음은 kstat 명령어로 ce 네트웍 인터페이스 정보를 출력하여 egrep 명령어로
ipackets64, opackets64, rbytes64, obytes64를 추출하여, tr 명령어로 TAB을 콜론으로 변경하여
파일에 저장한다. 이렇게 저장된 데이타는 jtab 명령어의 입력으로 사용한다.
# kstat -p ce | egrep 'ipackets64|opackets64|rbytes64|obytes64' | tr '\t' : > output
# cat output
ce:0:ce0:ipackets64:102441
ce:0:ce0:obytes64:24117394
ce:0:ce0:opackets64:111255
ce:0:ce0:rbytes64:14884687
ce:1:ce1:ipackets64:72527
ce:1:ce1:obytes64:26244879
ce:1:ce1:opackets64:84249
ce:1:ce1:rbytes64:9296584
ce:2:ce2:ipackets64:1679135
ce:2:ce2:obytes64:5543200
ce:2:ce2:opackets64:26219
ce:2:ce2:rbytes64:323122974
ce:3:ce3:ipackets64:0
ce:3:ce3:obytes64:0
ce:3:ce3:opackets64:0
ce:3:ce3:rbytes64:0
#
|
위에 수집된 데이타에 다음과 같이 jtab 명령어를 사용하여 HTML 페이지를 만들었다.
# jtab -d : -G 3,4,5 output > out.html
다음은 out.html 파일의 내용이다:
+ |
ce0 | ce1 | ce2 | ce3 |
ipackets64 | 102441 | 72527 | 1679135 | 0 |
obytes64 | 24117394 | 26244879 | 5543200 | 0 |
opackets64 | 111255 | 84249 | 26219 | 0 |
rbytes64 | 14884687 | 9296584 | 323122974 | 0 |
|
-G 옵션에 3개의 필드 번호를 지정하는데, 첫번째 필드는 컬럼명으로 사용될 필드 번호이고,
두번째 필드는 열명(row name)으로 사용될 필드 번호이고, 세번째 필드는 데이타로 사용될 필드 번호이다.
다음은 output 파일에 구분자를 콜론(:)으로 사용하여 3번째 필드를 테이블의 컬럼명으로
사용하고 4번째 필드를 열명(row name)으로 사용하고 5번째 필드를 데이타로 사용하여 HTML table을 만든다.
-d 옵션으로 필드의 구분자를 지정한다.
-P 옵션을 사용하면 HTML 형식의 출력이 아닌, 텍스트 형식으로 출력한다.
# jtab -d : -P -G 3,4,5 output
+ ce0 ce1 ce2 ce3
ipackets64 102441 72527 1679135 0
obytes64 24117394 26244879 5543200 0
opackets64 111255 84249 26219 0
rbytes64 14884687 9296584 323122974 0
|
4.22 jsum
jsum
명령어는 지정한 파일이나 표준입력에서 데이타를 읽어서 지정한 컬럼 별 또는 라인 별로
합계를 구해준다. file을 지정하지 않으면 표준입력을 사용한다.
# cat bin.dat
-r-xr-xr-x 1 bin bin 10492 Oct 6 1998 /usr/bin/keylogin
-r-xr-xr-x 1 bin bin 5412 Oct 6 1998 /usr/bin/keylogout
-r-xr-xr-x 1 bin bin 7068 Oct 6 1998 /usr/bin/kinit
-r-xr-xr-x 1 bin bin 8376 Oct 6 1998 /usr/bin/klist
# jsum -G 5 bin.dat
31348
# jsum -G 2,5 bin.dat
4 31348
|
위의 예제에 있는 bin.dat 파일은 "ls -l" 명령어의 결과를 가지고 있다. 여기서 첫번째 예제는
5번째 필드의 값을 더하여 합계를 보여준다. 두번째 예제는 2번째 필드와 5번째 필드의
합계를 동시에 보여주는 예제이다.
계산하고 싶은 컬럼번호를 -G 옵션에 지정한다. 여러개를 동시에 보고 싶으면 콤마로 구분하여
여러 컬럼번호를 지정할 수 있다.
입력되는 컬럼의 구분은 white space(TAB 또는 SPACE)로 구분한다. 구분자를 다른 것으로
사용하고 싶으면 -d 옵션을 사용하여 컬럼 구분자를 지정할 수 있다.
다음은 라인 별로 합계를 구하는 예제이다. -l 옵션을 사용하면 각각의 라인에 있는
숫자를 모두 더하여 라인 별로 합계를 출력한다.
# cat exam.dat
120 10 29 10.001
99 89 12.1 10.02
20 20 10 10
20 20 20 20
# jsum -l exam.dat
169.001
210.12
60
80
# jsum -l -i exam.dat
169
210
60
80
# jsum -l -G 2,3 exam.dat2
39
101.1
30
40
|
합계를 구하는데 사용되는 데이타는 양수이어야 하고 반드시 숫자로 시작하여야 한다.
숫자가 아닐 경우에 오류가 발생한다.
숫자와 문자가 섞여 있을 때, 문자는 숫자의 끝으로 인식한다.
음수는 숫자로 인식하지 않는다.
-G 2,3 옵션을 지정하여 두번째와 세번째 데이타만 더하여 합계를 출력한다.
숫자는 64 bit로 계산한다. 따라서 최대값은 2^64(18446744073709551616) 이다.
이 보다 값이 커지게 되면 부정확한 값이 나온다.
소수점 이하의 숫자가 있을 경우, 소수점 이하 9자리까지만 숫자로 인식한다.
소수점 이하를 계산하지 않으려면, -i 옵션을 사용하면 된다.
4.23 jcal
jcal 명령어는 날짜에 관련한 정보를 제공한다. 지정한 날짜가 무슨 요일인지, 지정한 달에는
몇일이 있는지, 지정한 날짜를 기준으로 며칠전 또는 며칠후는 몇월 몇일인지
등등의 데이타를 제공한다.
다음은 jcal 명령어에 대한 예제이다.
# jcal 2005/06/10 100
2005/09/18 Tue
# jcal 2005/06/10 -100
2005/03/02 Tue
# jcal 0 -1
2005/06/09 Tue
# jcal -D 2005/02
28
# jcal -D 0
30
# jcal -f %y%m%d 0 0
050610
|
jcal 명령어는 지정한 날짜로 부터 며칠전 또는 며칠후가 몇월 몇일인지를 계산하여 준다.
그리고 그날이 무슨 요일인지 보여준다. 날짜를 지정하지 않고 0(zero)을 지정하면
현재 날짜를 지정한 것과 같다.
"# jcal 2005/06/10 -100" 명령어는 2005년 6월 10일에서 100일 전에는 몇년 몇월 몇일이지를
보여준다.
-D 옵션을 사용하면 지정한 달에 몇일이 있는지 알려준다.
4.24 timecheck
시스템에서 데이타를 수집할 때, 시간 정보를 함께 수집하는 명령어들이 있다. 또한
사용자가 쉘 스크립트를 만들어 데이타를 수집할 때, 시간 정보를 함께 수집할 수 있다.
이러한 데이타를 가지고 그래프를 그릴때, 수집한 데이타가 일정시간 간격으로 수집되었는지
확인하고 싶을 경우에 timecheck 명령어를 사용할 수 있다.
프로그램이 일정시간 간격으로 실행하였다고 하여도 시스템의 로드가 많으면, 주어진 시간 간격으로
데이타를 수집하지 못하고 시간이 밀리는 경우가 있을 수 있다.
다음은 psinfo 명령어의 결과물과 dolog 명령어의 결과물에서 시간정보를 처리하는
예제이다.
# psinfo -A 5 10 > psinfo.log
# grep Date.time psinfo.log > tt
# cat tt
Date.time 0819.18:15:58 proc 68 zombie 0 runnable 0 lwp 136 cpu 3.58% avgload 0.09 0.07 0.07 hp+stk 42896K
Date.time 0819.18:16:03 proc 68 zombie 0 runnable 0 lwp 136 cpu 10.21% avgload 0.08 0.07 0.07 hp+stk 42896K
Date.time 0819.18:16:08 proc 70 zombie 0 runnable 3 lwp 138 cpu 16.60% avgload 0.28 0.11 0.09 hp+stk 42992K
Date.time 0819.18:16:13 proc 70 zombie 0 runnable 3 lwp 138 cpu 23.59% avgload 0.45 0.15 0.10 hp+stk 42960K
Date.time 0819.18:16:18 proc 70 zombie 0 runnable 3 lwp 138 cpu 29.34% avgload 0.59 0.18 0.11 hp+stk 42992K
# timecheck -d . -G 3 tt
Interval
5
5
5
5
# timecheck -t -d . -G 3 tt
Line Time Interval
2 18:16:03 5
# dolog -o df-k -T 5,4 df -k /
# ls x*
df-k.021216.124120.5
# grep DATE df-k.021216.124120.5
# DATE 2002/12/16 12:41:20
# DATE 2002/12/16 12:41:25
# DATE 2002/12/16 12:41:30
# DATE 2002/12/16 12:41:35
# grep DATE df-k.021216.124120.5 | timecheck -G 4
Interval
5
5
5
|
-d 옵션으로 컬럼의 구분자를 지정하고, -G 옵션으로 시간정보가 있는 컬럼을 지정한다.
4.25 jwget
jwget 명령어는 HTTP 프로토콜을 이용하여 HTML page를 웹서버로 부터 가져온다.
# jwget -o index.html -h localhost -p 9900 /index.html
# jwget -o cpu.gif -h localhost -p 9900 /mrepx.cgi?-n+-k+D:2010.07,7,0,24,1,100,1,3,CPU
# ls -l cpu.gif index.html
-rw-r--r-- 1 guest other 13681 Sep 7 18:02 cpu.gif
-rw-r--r-- 1 guest other 1616 Sep 7 18:06 index.html
|
위에서 첫번째 jwget 명령어는 localhost 에 9900 포트로 접속하여 "/mrepx.cgi?-n+-k+D:2010.07,7,0,24,1,100,1,3,CPU"
페이지를 요청하여 그 결과를 cpu.gif 파일에 저장한다.
두번째 jwget 명령어는 localhost 에 9900 포트로 접속하여 index.html 페이지를 요청하여 그 결과를 index.html 파일에 저장한다.
-h 옵션으로 웹서버 이름을 지정하고, -p 옵션을 사용하여 TCP 포트 번호를 지정한다.
jwget 명령어는 ParmView에서 웹으로 보는 그래프 데이타를 명령어 라인에서 그래프 테이타를 가져올 수 있도록
최소한의 기능만 구현한 것이다.
이 명령어를 범용으로 웹페이지 데이타를 가져오기 위해 사용하기에는 기능이 미비하다.
4.26 jfind, jfparse
jfind 명령어는 지정한 디렉토리와 동일한 파일 시스템에 있는 하위의 모든 디렉토리 및 파일의 크기를 수집하는 명령어이다.
jfparse 명령어는 jfind 명령어가 수집한 데이타를 분석하는 명령어이다.
다음의 명령어는 / 루트 파일 시스템에 있는 모든 디렉토리 및 파일의 크기와 사용자 ID, 그룹 ID, 파일 모드, 최종 수정시간 정보를 수집~
한다.
# jfind -o jfind_root.log /
|
다음은 jfind 명령어의 출력물의 일부이다.
# head jfind_root.log
DATE 2018-11-15 17:42:13
TOP_DIRECTORY /
T SIZE BLOCK UID GID NDIR NFILE MODE DATE FILE
d 0:0 0:0 0 3 0:1 0:0 41ed 5613ed62 /etc/fm/fmd
- 161 2 0 2 - - 81a4 5613edee /etc/fm/libfruid.conf
d 161:161 2:2 0 3 1:2 1:1 41ed 5b5bfdbe /etc/fm
l 21 1 0 0 - - a1ff 5b5bfdcb /etc/fs/hsfs -> ../../usr/lib/fs/hsfs
l 20 1 0 0 - - a1ff 5b5bfdcb /etc/fs/dev -> ../../usr/lib/fs/dev
l 20 1 0 0 - - a1ff 5b5bfdcb /etc/fs/zfs -> ../../usr/lib/fs/zfs
l 20 1 0 0 - - a1ff 5b5bfdcb /etc/fs/nfs -> ../../usr/lib/fs/nfs
l 20 1 0 0 - - a1ff 5b5bfdcb /etc/fs/ufs -> ../../usr/lib/fs/ufs
|
이렇게 수집된 결과물을 jfparse 명령어의 입력 파일로 사용하면, 다음과 같이
디렉토리 별로 그 하위에 있는 모든 파일의 크기의 합계를 보여준다.
# jfparse jfind-root.log
SIZE BSIZE PERCENT NUM_DIR NUM_FILE UID DIRECTORY
5272000560 5587883008 100.00% 8933 157655 0 /
---------------------------------------------------------------------
4670628851 4952501248 88.63% 8378 151591 0 usr
192024020 203720704 3.65% 217 1908 0 etc
120006907 126769664 2.27% 151 1881 0 platform
107054770 108995584 1.95% 54 484 0 boot
103076038 108106752 1.93% 44 714 0 kernel
67078534 75447296 1.35% 75 1060 0 lib
12130410 12333056 0.22% 1 4 0 .
773 3584 0.00% 2 3 0 root
192 3584 0.00% 6 7 0 opt
65 1024 0.00% 1 2 0 cdrom
0 512 0.00% 1 1 0 media
0 0 0.00% 1 0 0 mnt
0 0 0.00% 2 0 0 system
|
jfparse 명령어에 -d directory 옵션을 추가하면, 지정한 디렉토리에 포함된 디렉토리 목록을 보여준다.
다음은 -d /etc 옵션을 지정하여, /etc 디렉토리에 포함된 모든 디렉토리에 대한 총량을 다음과 같이 출력한다.
# jfparse -d /etc jfind-root.log
SIZE BSIZE PERCENT NUM_DIR NUM_FILE UID DIRECTORY
192024020 203720704 3.65% 217 1908 0 /etc
---------------------------------------------------------------------
116416625 117045760 2.09% 3 24 0 svc
66533343 75523584 1.35% 5 312 0 gconf
3058410 3571200 0.06% 1 261 0 brltty
2473100 2812928 0.05% 8 188 0 net-snmp
638412 799232 0.01% 9 97 0 mail
452607 612864 0.01% 2 151 0 certs
294014 421888 0.01% 6 8 0 amd64
228561 277504 0.00% 2 3 0 bash
253659 272384 0.00% 2 25 0 openldap
134136 268800 0.00% 1 5 0 devices
177736 250880 0.00% 7 92 0 security
172890 240640 0.00% 1 94 0 .
141144 156160 0.00% 5 20 0 apache2
126553 141824 0.00% 14 21 0 hal
74325 117248 0.00% 3 66 0 fonts
103575 109056 0.00% 4 7 0 pkg
83307 103936 0.00% 3 27 0 xdg
95650 101376 0.00% 1 7 0 ssh
89834 95744 0.00% 2 8 0 ssm
28516 95232 0.00% 4 142 0 openssl
|
4.47 jsysexec
jsysexec 명령어는 Solars 10 버전에서 제공하는 dtrace 명령어를 이용하여,
새로 실행한( EXEC) 프로세스 정보를 보여준다.
다음과 같이 아무 옵션 없이 jsysexec 명령어를 실행하면, 새로 실행되는 프로세스 정보를 보여준다.
# /opt/JSparm/bin/jsysexec
PID UID PPID COMMAND
17527 100 886 psinfo
17528 100 886 ls
17529 100 886 find -ls /opt
17530 100 886 vi /etc/group
^C
|
-v 옵션을 지정하면, 다음과 같이 조부모 프로세스 ID 정보를 보여주고, -N 옵션을 지정하면, 부모 프로세스와
조부모 프로세스 이름을 함께 보여준다.
# /opt/JSparm/bin/jsysexec -v -N
PID UID PPID:CMD GPPID:CMD COMMAND
17533 100 886:ksh 880:sshd ls -l
17534 100 886:ksh 880:sshd grep root /etc/passwd
17536 100 886:ksh 880:sshd grep vi
17535 100 886:ksh 880:sshd ps -ef
17535 100 886:ksh 880:sshd ps -ef
^C
|
-P file 옵션을 사용하여, jsysexec 명령어를 실행한 결과물 파일을 -P 옵션에 지정하면,
들여쓰기 방식으로 프로세스 트리를 보여준다.
# /opt/JSparm/bin/jsysexec > jsysexec.log
# cat jsysexec.log
PID UID PPID COMMAND
2626 100 2625 -bash
2627 100 2626 /usr/sbin/quota
2628 100 2626 /bin/cat -s /etc/motd
2629 100 2626 /bin/mail -E
2630 100 2626 ps
# /opt/JSparm/bin/jsysexec -P jsysexec.log
2625 [?] = (?)
2626 [100] = -bash
2627 [100] = /usr/sbin/quota
2628 [100] = /bin/cat -s /etc/motd
2629 [100] = /bin/mail -E
2630 [100] = ps
|
4.48 jsystcp
jsystcp 명령어는 Solars 11 버전 이상에서 실행되며, dtrace 명령어를 이용하여,
TCP 접속에 대한 정보를 조사합니다.
다음과 같이 아무 옵션 없이 jsystcp 명령어를 실행하면, 나의 시스템으로 들어오는 TCP 접속과 나의 시스템에서
나가는 TCP 접속 정보를 보여준다.
프로세스를 종료하려면, <CTRL-C>을 치면 됩니다.
# /opt/JSparm/bin/jsystcp
PID IP PORT MSS DIR
2542 192.168.56.110 22 1460 OUT
886 192.168.56.110 22 1460 IN
778 127.0.0.1 53 8232 OUT
778 127.0.0.1 53 8232 OUT
^C
|
다음과 같이 -v 옵션을 지정하면, 좀 더 자세한 정보를 보여준다.
# /opt/JSparm/bin/jsystcp -v
PID FROM_IP TO_IP F_PORT T_PORT MSS DIR
895 192.168.56.110 192.168.56.113 32805 22 1460 IN
2487 127.0.0.1 127.0.0.1 57649 53 8232 OUT
2487 127.0.0.1 127.0.0.1 37288 53 8232 OUT
2487 127.0.0.1 127.0.0.1 44834 53 8232 OUT
2487 127.0.0.1 127.0.0.1 55512 53 8232 OUT
^C
|
4.48 jsysudp
jsysudp 명령어는 Solars 11 버전 이상에서 실행되며, dtrace 명령어를 이용하여,
UDP 페킷에 대한 정보를 조사합니다.
다음과 같이 아무 옵션 없이 jsysudp 명령어를 실행하면, 나의 시스템으로 들어오는 UDP 페킷과 나의 시스템에서
나가는 UDP 페킷 정보를 보여준다.
프로세스를 종료하려면, <CTRL-C>을 치면 됩니다.
# /opt/JSparm/bin/jsysudp
PID IP PORT LEN DIR
2590 192.168.56.110 4321 1032 OUT
378 ff02::1:2 547 72 OUT
2577 192.168.56.110 4321 1032 IN
378 255.255.255.255 67 308 OUT
378 255.255.255.255 67 308 OUT
^C
|
다음과 같이 -v 옵션을 지정하면, 좀 더 자세한 정보를 보여준다.
# /opt/JSparm/bin/jsysudp -v
PID FROM_IP TO_IP F_PORT T_PORT LEN DIR
2577 192.168.56.110 192.168.56.113 38430 4321 1032 IN
2613 192.168.56.113 192.168.56.110 57398 4321 1032 OUT
^C
|
4.48 rmtimef
rmtimef 명령어는 지정한 디렉토리에서 지정한 날짜/시간 패턴의 형식을 가지고 있는 파일명을 보여주거나 삭제한다.
rmtimef 명령어는JSparm의 mmonx 시스템 통계정보 서버가 생성하는 파일이나 getdata 명령어가 생성하는 파일들을 일정 시간이 지나면, 자동으로 지울 수 있도록 도와 주는 명령어있다.
mmonx 데몬 프로세스는 /opt/JSparm/dbspace 디렉토리에 한달에 하나씩 mdbxx-yyyy.mm 형식을 파일을 생성한다.
다음과 같이 명령어를 실행하면, /opt/JSparm/dbspace 디렉토리에서 mdbxx-yyyy.mm 형식의 파일명을 가진 파일명들을 보여준다.
# rmtimef -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
mdbxx-2018.11
mdbxx-2018.10
mdbxx-2018.09
mdbxx-2018.08
mdbxx-2018.07
mdbxx-2018.05
mdbxx-2018.04
mdbxx-2018.03
mdbxx-2018.02
mdbxx-2018.01
mdbxx-2017.12
mdbxx-2017.11
mdbxx-2017.10
mdbxx-2017.09
|
-L 옵션과 -c 옵션을 함께 사용하면, -c 옵션에 지정한 조건에 따라 지워질 파일과 보관될 파일이 무엇인지 확인할 수 있다.
파일이 지워지지는 않는다.
(명령어는 2018년 11월 8일에 실행함)
# rmtimef -L -c month=3 -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
keep: /opt/JSparm/dbspace/mdbxx-2018.11
keep: /opt/JSparm/dbspace/mdbxx-2018.10
keep: /opt/JSparm/dbspace/mdbxx-2018.09
delete: /opt/JSparm/dbspace/mdbxx-2018.08
delete: /opt/JSparm/dbspace/mdbxx-2018.07
delete: /opt/JSparm/dbspace/mdbxx-2018.05
delete: /opt/JSparm/dbspace/mdbxx-2018.04
delete: /opt/JSparm/dbspace/mdbxx-2018.03
delete: /opt/JSparm/dbspace/mdbxx-2018.02
delete: /opt/JSparm/dbspace/mdbxx-2018.01
delete: /opt/JSparm/dbspace/mdbxx-2017.12
delete: /opt/JSparm/dbspace/mdbxx-2017.11
delete: /opt/JSparm/dbspace/mdbxx-2017.10
delete: /opt/JSparm/dbspace/mdbxx-2017.09
|
-D 옵션과 -c 옵션을 함께 사용하면, 조건에 맞는 파일을 삭제한다.
# rmtimef -D -v -c month=3 -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
[deleting condition] file before the time '2018-08-01.00:00:00'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.08'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.07'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.05'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.04'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.03'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.02'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.01'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2017.12'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2017.11'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2017.10'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2017.09'
|
|