Linux下方便的socket读写查看器(socktop)
这时候还是伟大的systemtap来救助了。 因为所有的socket通讯都是通过socket接口来的,任何family的通讯包括unix域套接都要走的,所以只要截获了socket 读写的几个syscall 就搞定了.
systemtap发行版本提供了个工具socktop, 位于 /usr/share/doc/systemtap/examples/network/socktop, 是个非常方便的工具, 干这个事情最合适了。
socktop源码里面的版权和简单的功能介绍:
# Socktop systemtap script
# Copyright (C) 2006 IBM Corp.
#
# This file is part of systemtap, and is free software. You can
# redistribute it and/or modify it under the terms of the GNU General
# Public License (GPL); either version 2, or (at your option) any
# later version.
###
### socktop - Combination shell/systemtap script to track reads and writes
### on sockets by process. Can be filtered by process IDs and
### names, protocols, protocol families, users and socket type.
###
$ uname -r
2.6.18-164.el5
$ rpm -i kernel-debuginfo-common-2.6.18-164.el5.x86_64.rpm
$ rpm -i kernel-debuginfo-2.6.18-164.el5.x86_64.rpm
#使用帮助
$ /usr/share/doc/systemtap/examples/network/socktop -h
USAGE: 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: 10)
-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 text
Protocol Families:
LOCAL, INET, INET6, IPX, NETLINK, X25, AX25, ATMPVC, APPLETALK, PACKET
Protocols:
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 31 21:23:03 2011 ======================== ------------------------------- PROCESSES ------------------------------- PID UID #SEND #RECV SEND_KB RECV_KB PROT FAMILY COMMAND 24821 50453 1 0 0 0 IP LOCAL crond 3840 0 0 2 0 0 IP LOCAL syslog-ng -------------------------------- DEVICES -------------------------------- DEV #XMIT #RECV XMIT_KB RECV_KB eth0 457 250 102 38 bond0 457 0 102 0 lo 24 24 2 2 eth1 0 10 0 0 =========================================================================
我们很清楚的看到了,crond在发,syslog-ng在收。
如果你想知道报文的内容的话,可以改改脚本把报文也dump出来。
建议继续学习:
- 推荐一些socket工具,TCP、UDP调试、抓包工具 (阅读:10332)
- 推荐一些socket工具,TCP、UDP调试、抓包工具 (阅读:8126)
- 用unix socket加速php-fpm、mysql、redis的连接 (阅读:7160)
- 浅析linux kernel network之socket创建 (阅读:6312)
- python中的socket代理 (阅读:5734)
- nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket (阅读:5687)
- web socket 心跳包的实现方案 (阅读:5587)
- netstat和web主机socket文件分析 (阅读:5148)
- 使用socket.io和node.js搭建websocket应用 (阅读:4875)
- php socket为什么这么慢,直到超时 (阅读:4618)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Yu Feng 来源: Erlang非业余研究
- 标签: socket socktop
- 发布时间:2011-04-01 13:32:00
-
[885] WordPress插件开发 -- 在插件使用 -
[136] 解决 nginx 反向代理网页首尾出现神秘字 -
[56] 整理了一份招PHP高级工程师的面试题 -
[54] 分享一个JQUERY颜色选择插件 -
[54] Innodb分表太多或者表分区太多,会导致内 -
[54] 如何保证一个程序在单台服务器上只有唯一实例( -
[53] jQuery性能优化指南 -
[52] 用 Jquery 模拟 select -
[51] 海量小文件存储 -
[51] 全站换域名时利用nginx和javascri
