所有的socket通讯都是通过socket接口来的,任何family的通讯包括unix域套接都要走的,所以只要截获了socket 读写的几个syscall 就可以了解unix域套接字的发送和接受情况。 systemtap发行版本提供了个工具socktop, 位于 /usr/share/doc/systemtap/examples/network/socktop, 是个非常方便的工具, 干这个事情最合适了。安装为了部署 SystemTap,需要安装以下两个 RPM 包:复制代码代码如下:systemtapsystemtap-runtime以 root 权限,运行以下命令安装:复制代码代码如下:yum install systemtap systemtap-runtime注:在使用 SystemTap 前,需要安装内核信息包,可以运行以下命令安装:复制代码代码如下:stap-prep如果安装失败,请手动安装,手动安装步骤请见手动安装内核信息包。注:我在我的主机上运行 stap-prep 的报错信息如下复制代码代码如下:[root@test ~]# stap-prepNeed to install the following packages:kernel-devel-2.6.-.el5.x_kernel-debuginfo-2.6.-.el5.x_Traceback (most recent call last): File "/usr/bin/yumdownloader", line , in <module> import yumImportError: No module named yumproblem downloading rpm(s) kernel-devel-2.6.-.el5.x_ kernel-debuginfo-2.6.-.el5.x_手动安装必需的内核信息包需要的内核信息包包含你内核中匹配以下字段 -devel, -debuginfo, 和 -debuginfo-common 的包。如下:复制代码代码如下:kernel-debuginfokernel-debuginfo-commonkernel-devel需要安装和你内核对应版本的包,运行命令复制代码代码如下:uname -r2.6.-.el5可以指定你的内核是 2.6.-.el5,因此你需要的包如下:复制代码代码如下:kernel-debuginfo-2.6.-.el5.x_.rpmkernel-devel-2.6.-.el5.x_.rpmkernel-debuginfo-common-2.6.-.el5.x_.rpm重要!!!!注意:这三个包必须与你的内核版本匹配,不能你懂的。下载这三个 rpm 包,到 这个网站去下载。或者最简单的在 google 搜索包名。下载 kernel-debuginfo-2.6.-.el5.x_.rpm:wget kernel-devel-2.6.-.el5.x_.rpm:wget kernel-debuginfo-common-2.6.-.el5.x_.rpm:wget -ivh kernel-debuginfo-common-2.6.-.el5.x_.rpmrpm -ivh kernel-debuginfo-2.6.-.el5.x_.rpmrmp -ivh kernel-devel-2.6.-.el5.x_.rpm初始化测试为了测试 stap 是否安装正确,需要运行以下命令测试:复制代码代码如下:stap -v -e 'probe vfs.read {printf("read performedn"); exit()}'socket读写查看器socktopsocktop源码里面的版权和简单的功能介绍:使用帮助复制代码代码如下:$ /usr/share/doc/systemtap/examples/network/socktop -hUSAGE: socktop [-d] [-i interval] [-N num] [-P protocol]... [-f family]... [-t stype]... [-n pname]... [-p pid]... [-u username]... [-h] -d # print network device traffic (default: off) -i interval # interval in seconds between printing (default: 5) -N num # number of top processes and devices to print (default: ) -f family # this protocol family only (default: all)-P protocol # this protocol only (default: all)-t stype # this socket type only (default: all)-n pname # this process name only (default: all)-p pid # this process ID only (default: all)-u username # this user only (default: all)-c count # number of iteration-m mod_name # generate instrumentation (but do not run) -h # print this help textProtocol Families: LOCAL, INET, INET6, IPX, NETLINK, X, AX, ATMPVC, APPLETALK, PACKETProtocols: TCP, UDP, SCTP, IP, FC, ... (see /etc/protocols for complete list)Socket Types: STREAM, DGRAM, RAW, RDM, SEQPACKET, DCCP, PACKET 上面的使用写的很明白了,我们要过滤的是unix套接字, 每5秒报告下情况, 还顺手把网络设备的流量打出来。 复制代码代码如下:$sudo /usr/share/doc/systemtap/examples/network/socktop -f LOCAL -i 5 -d======================= Thu Mar :: ========================------------------------------- PROCESSES -------------------------------PID UID #SEND #RECV SEND_KB RECV_KB PROT FAMILY COMMAND 1 0 0 0 IP LOCAL crond 0 0 2 0 0 IP LOCAL syslog-ng -------------------------------- DEVICES --------------------------------DEV #XMIT #RECV XMIT_KB RECV_KBeth0 bond0 0 0lo 2 2eth1 0 0 0========================================================================= 我们很清楚的看到了,crond在发,syslog-ng在收。 如果你想知道报文的内容的话,可以改改脚本把报文也dump出来。 玩得开心!
推荐整理分享Linux下使用socktop来检测socket的通讯状况(linux搭建socks代理),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux sock,linux socks5,sock linux,sock linux,linux socks5,linux socks,linux socks,linux sock,内容如对您有帮助,希望把文章链接给更多的朋友!
Linux系统的dd命令使用教程 一、基础用法dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=
Linux系统中netstat命令的基本使用方法 在计算中,netstat(网络统计数据)是一个命令行工具,它显示传输控制协议的网络连接(传入和传出),路由表,和一个数字网络接口(网络接口控制
linux系统不同对象升级方法详细介绍 当我们使用Linux一段时间以后,自然不会满足总是在没有任何变化的系统中工作,而是渴望能象在Windows系统中一样,不断对自己的Linux进行升级。另一方