20070921 星期五 九月 21, 2007

用dtrace脚本监测进程网络状态 tcpsnoop和tcptop是两个很有用的DTrace脚本,用以监测系统中哪些进程正在使用网络传输数据。

tcpop显示最近产生TCP流量的进程。示例如下:

    # tcptop -C 30
    Sampling... Please wait.
    2005 Jul 5 05:18:56, load: 1.07, TCPin: 3 Kb, TCPout: 112 Kb

    UID PID LADDR LPORT RADDR RPORT SIZE NAME
    0 242 192.168.1.5 79 192.168.1.1 54283 272 inetd
    0 242 192.168.1.5 23 192.168.1.1 54284 294 inetd
    0 20929 192.168.1.5 79 192.168.1.1 54283 714 in.fingerd
    100 20926 192.168.1.5 36409 192.168.1.1 79 1160 finger
    100 20927 192.168.1.5 36410 192.168.1.1 79 1160 finger
    100 20928 192.168.1.5 36411 192.168.1.1 23 1627 telnet
    0 20313 192.168.1.5 22 192.168.1.1 54285 2798 sshd
    0 20931 192.168.1.5 23 192.168.1.1 54284 4622 in.telnetd
    100 20941 192.168.1.5 858 192.168.1.1 514 115712 rcp

    2005 Jul 5 05:19:26, load: 1.04, TCPin: 0 Kb, TCPout: 4 Kb

    UID PID LADDR LPORT RADDR RPORT SIZE NAME
    100 20942 192.168.1.5 36412 192.168.1.1 79 1160 finger
    0 20931 192.168.1.5 23 192.168.1.1 54284 7411 in.telnetd
    [...]
其中-C表示不清空屏幕输出。30是时间间隔。
如果在运行该脚本时出现错误信息“dtrace: failed to compile script /dev/fd/10: line 40: failed to resolve SS_TCP_FAST_ACCEPT: Unknown variable name”。只需把脚本中的SS_TCP_FAST_ACCEPT替换成SS_DIRECT即可。

tcpsnoop打印TCP包及进程的ID号。其示例如下:
    # tcpsnoop
    UID PID LADDR LPORT DR RADDR RPORT SIZE CMD
    100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger
    100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger
    100 20892 192.168.1.5 36398 <- 192.168.1.1 79 54 finger
    0 242 192.168.1.5 23 <- 192.168.1.1 54224 54 inetd
    0 242 192.168.1.5 23 -> 192.168.1.1 54224 54 inetd
    0 242 192.168.1.5 23 <- 192.168.1.1 54224 54 inetd
    0 242 192.168.1.5 23 <- 192.168.1.1 54224 78 inetd
    0 242 192.168.1.5 23 -> 192.168.1.1 54224 54 inetd
    0 20893 192.168.1.5 23 -> 192.168.1.1 54224 57 in.telnetd
    0 20893 192.168.1.5 23 <- 192.168.1.1 54224 54 in.telnetd
    0 20893 192.168.1.5 23 -> 192.168.1.1 54224 78 in.telnetd
    0 20893 192.168.1.5 23 <- 192.168.1.1 54224 57 in.telnetd
    0 20893 192.168.1.5 23 -> 192.168.1.1 54224 54 in.telnetd
    [...]
    同tcptop一样,如果运行时出现错误信息“dtrace: failed to compile script /dev/fd/10: line 40: failed to resolve SS_TCP_FAST_ACCEPT: Unknown variable name”,用SS_DIRECT替换SS_TCP_FAST_ACCEPT。

Posted by Judy Chen in Solaris at 20070921 Comments[0]

Comments:

Post a Comment:
Comments are closed for this entry.
Click me to subscribe
Judy Chen
« 十二月 2008
星期日星期一星期二星期三星期四星期五星期六
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   
       
Today

Recent Entries



Photos

www.flickr.com


Referrers & Other Stats


View My Stats