NicStat - WindyHana's Solanara

목차

개요

설치

.gz 파일에 솔라리스(스팍 및 x86)과 리눅스 바이너리 및 소스, 맨페이지 파일이 같이 들어있다. 단순히 복사하면 된다.
root@wl ~/src # wget "http://downloads.sourceforge.net/project/nicstat/nicstat-1.90.tar.gz?ts=1316636306"
root@wl ~/src # tar xvfz nicstat-1.90.tar.gz
root@wl ~/src # cd nicstat-1.90
root@wl ~/src/nicstat-1.90 # cp .nicstat.Solaris_10_i386 /usr/local/bin/nicstat
root@wl ~/src/nicstat-1.90 # mv nicstat.1 /usr/local/share/man/man1
소스설치
root@wl ~/src/nicstat-1.90 # mv Makefile.Solaris Makefile
root@wl ~/src/nicstat-1.90 # make
root@wl ~/src/nicstat-1.90 # make install 1)
1) /usr/local에 설치된다. 위치를 바꾸려면 [make BASEDIR=/install/path install]와 같이 한다.

사용

실행방법은 간단하다. 아래와 같이 하면 된다. -h 옵션을 붙이면 도움말이 나온다.
root@wl ~ # nicstat -h
USAGE: nicstat [-hvnsxpztual] [-i int[,int...]]
   [interval [count]]

         -h                 # help
         -v                 # show version (1.90)
         -i interface       # track interface only
         -n                 # show non-local interfaces only (exclude lo0)
         -s                 # summary output
         -x                 # extended output
         -p                 # parseable output
         -z                 # skip zero value lines
         -t                 # show TCP statistics
         -u                 # show UDP statistics
         -a                 # equivalent to "-x -u -t"
         -l                 # list interface(s)
    eg,
       nicstat              # print summary since boot only
       nicstat 1            # print every 1 second
       nicstat 1 5          # print 5 times only
       nicstat -z 1         # print every 1 second, skip zero lines
       nicstat -i hme0 1    # print hme0 only every 1 second
root@wl ~ # nicstat 5
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
13:33:16      lo0    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
13:33:16     bge0    0.03    0.01    0.21    0.16   125.5   88.07  0.00   0.00
13:33:16     bge1    0.00    0.00    0.01    0.00   136.8   68.89  0.00   0.00
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
13:33:21      lo0    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
13:33:21     bge0    0.12    0.15    1.00    1.00   119.0   156.2  0.00   0.00
13:33:21     bge1    0.00    0.01    0.00    0.20    0.00   64.00  0.00   0.00
Ctrl+C
root@wl ~ # nicstat -p
1285740541:lo0:0.000:0.000:0.002:0.002:0.00:0.00
1285740541:bge0:4.056:29.15:13.77:24.23:0.27:0.00
1285740541:bge1:29.30:7.429:27.28:17.05:0.30:0.00
root@wl ~ # 
첫번째 라인은 시스템 부트 이후의 통계가 표시된다.
Time: 현재 시간
Int: 인터페이스명
rKB/s: 초당 수신 바이트
wKB/s: 초당 송신 바이트
rPk/s: 초당 수신 패킷
wPk/s: 초당 송신 패킷
rAvs: 수신 패킷당 평균 크기(바이트)
wAvs: 송신 패킷당 평균 크기(바이트)
%Util: 인터페이스 사용율
Sat: Saturation. 오류 회수. 포화 상태를 표시.

kstat 라이브러리

root@wl ~ # cat kstattest.c
// cc -lkstat -o kstattest kstattest.c
#include <kstat.h>
#include <stdio.h>

void my_module_display(kstat_t * ksp) {
    printf("%s %s %s", ksp->ks_module, ksp->ks_name, ksp->ks_class);
}

void my_io_display(kstat_io_t kio) {
    printf(" %d %d\n", kio.nread, kio.nwritten);
}

void main() {
    kstat_ctl_t * kc;
    kstat_t * ksp;
    kstat_io_t kio;

    kc = kstat_open();
    for (ksp = kc->kc_chain; ksp != NULL; ksp = ksp->ks_next) {
        if (ksp->ks_type == KSTAT_TYPE_IO) {
            kstat_read(kc, ksp, &kio);
            my_module_display(ksp);
            my_io_display(kio);
        }
    }
    kstat_close(kc);
}
root@wl ~ # cc -lkstat -o kstattest kstattest.c
root@wl ~ # ./kstattest
cmdk cmdk0 disk 338056704 0
cmdk cmdk1 disk 317503488 0
usba ehci0,total usb_byte_count 0 0
usba ehci0,ctrl usb_byte_count 0 0
usba ehci0,isoch usb_byte_count 0 0
usba ehci0,bulk usb_byte_count 0 0
usba ehci0,intr usb_byte_count 0 0
...
usba uhci3,total usb_byte_count 0 0
usba uhci3,ctrl usb_byte_count 0 0
usba uhci3,isoch usb_byte_count 0 0
usba uhci3,bulk usb_byte_count 0 0
usba uhci3,intr usb_byte_count 0 0
sd sd2 disk 88 0
nfs nfs1 nfs 0 0
root@wl ~ # 
Twitter RSS IconTexto 올바른 XHTML 1.0 Transitional 입니다 올바른 CSS입니다!