<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[Linux下方便的socket读写查看器（socktop）]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 19 May 2011 07:17:48 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	Linux下方便的socket读写查看器（socktop）<br/><br/>晚上找个工具来调查下unix域套接字的发送和接受情况，比如说A程序是否送出，B程序是否接收到，他找了tcpdump ,wireshark什么的，貌似都不支持。<br/><br/>这时候还是伟大的systemtap来救助了。 因为所有的socket通讯都是通过socket接口来的，任何family的通讯包括unix域套接都要走的，所以只要截获了socket 读写的几个syscall 就搞定了.<br/><br/>systemtap发行版本提供了个工具socktop， 位于 /usr/share/doc/systemtap/examples/network/socktop, 是个非常方便的工具, 干这个事情最合适了。<br/><br/>socktop源码里面的版权和简单的功能介绍：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;# Socktop systemtap script<br/>&nbsp;&nbsp;&nbsp;&nbsp;# Copyright (C) 2006 IBM Corp.<br/>&nbsp;&nbsp;&nbsp;&nbsp;#<br/>&nbsp;&nbsp;&nbsp;&nbsp;# This file is part of systemtap, and is free software. You can<br/>&nbsp;&nbsp;&nbsp;&nbsp;# redistribute it and/or modify it under the terms of the GNU General<br/>&nbsp;&nbsp;&nbsp;&nbsp;# Public License (GPL); either version 2, or (at your option) any<br/>&nbsp;&nbsp;&nbsp;&nbsp;# later version.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;###<br/>&nbsp;&nbsp;&nbsp;&nbsp;### socktop – Combination shell/systemtap script to track reads and writes<br/>&nbsp;&nbsp;&nbsp;&nbsp;### on sockets by process. Can be filtered by process IDs and<br/>&nbsp;&nbsp;&nbsp;&nbsp;### names, protocols, protocol families, users and socket type.<br/>&nbsp;&nbsp;&nbsp;&nbsp;###<br/><br/>$ uname -r<br/>2.6.18-164.el5<br/> <br/>$ rpm -i kernel-debuginfo-common-2.6.18-164.el5.x86_64.rpm<br/>$ rpm -i kernel-debuginfo-2.6.18-164.el5.x86_64.rpm <br/> <br/>#使用帮助<br/>$ /usr/share/doc/systemtap/examples/network/socktop -h<br/>USAGE: socktop [-d] [-i interval] [-N num] [-P protocol]... [-f family]...<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [-t stype]... [-n pname]... [-p pid]... [-u username]... [-h]<br/>&nbsp;&nbsp;&nbsp;&nbsp;-d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # print network device traffic (default: off)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-i interval&nbsp;&nbsp;# interval in seconds between printing (default: 5)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-N num&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # number of top processes and devices to print (default: 10)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-f family&nbsp;&nbsp;&nbsp;&nbsp;# this protocol family only (default: all)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-P protocol&nbsp;&nbsp;# this protocol only (default: all)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-t stype&nbsp;&nbsp;&nbsp;&nbsp; # this socket type only (default: all)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-n pname&nbsp;&nbsp;&nbsp;&nbsp; # this process name only (default: all)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-p pid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # this process ID only (default: all)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-u username&nbsp;&nbsp;# this user only (default: all)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-c count&nbsp;&nbsp;&nbsp;&nbsp; # number of iteration<br/>&nbsp;&nbsp;&nbsp;&nbsp;-m mod_name&nbsp;&nbsp;# generate instrumentation (but do not run)<br/>&nbsp;&nbsp;&nbsp;&nbsp;-h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # print this help text<br/> <br/>Protocol Families:<br/>&nbsp;&nbsp;&nbsp;&nbsp;LOCAL, INET, INET6, IPX, NETLINK, X25, AX25, ATMPVC, APPLETALK, PACKET<br/> <br/>Protocols:<br/>&nbsp;&nbsp;&nbsp;&nbsp;TCP, UDP, SCTP, IP, FC, ... (see /etc/protocols for complete list)<br/> <br/>Socket Types:<br/>&nbsp;&nbsp;&nbsp;&nbsp;STREAM, DGRAM, RAW, RDM, SEQPACKET, DCCP, PACKET<br/><br/>上面的使用写的很明白了，我们要过滤的是unix套接字， 每5秒报告下情况， 还顺手把网络设备的流量打出来。<br/>$sudo /usr/share/doc/systemtap/examples/network/socktop -f LOCAL -i 5 -d<br/>======================= Thu Mar 31 21:23:03 2011 ========================<br/>------------------------------- PROCESSES -------------------------------<br/>PID&nbsp;&nbsp; UID&nbsp;&nbsp;&nbsp;&nbsp; #SEND&nbsp;&nbsp; #RECV SEND_KB RECV_KB PROT FAMILY&nbsp;&nbsp; COMMAND<br/>24821 50453&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 IP&nbsp;&nbsp; LOCAL&nbsp;&nbsp;&nbsp;&nbsp;crond<br/>3840&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 IP&nbsp;&nbsp; LOCAL&nbsp;&nbsp;&nbsp;&nbsp;syslog-ng&nbsp;&nbsp;&nbsp;&nbsp; <br/> <br/>-------------------------------- DEVICES --------------------------------<br/>DEV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #XMIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #RECV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMIT_KB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RECV_KB<br/>eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;457&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;38<br/>bond0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 457&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br/>lo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<br/>eth1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br/>=========================================================================<br/><br/>我们很清楚的看到了，crond在发，syslog-ng在收。<br/><br/>如果你想知道报文的内容的话，可以改改脚本把报文也dump出来。<br/><br/>玩得开心!<br/><br/>来源：http://blog.yufeng.info/archives/1280
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] Linux下方便的socket读写查看器（socktop）]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>