Skip to content

追踪快速消失的TCP连接

有些时候,Linux系统上会发起一些TCP连接,但很快就结束。传统的netstat、ss或者lsof这类工具很难追踪到是谁(UID)或者哪一个程序(binary)发起的。我觉得perf可以追踪到,但是还不知道具体该怎么操作。

看了一下perf的文档,看来至少在CentOS 6.x上perf是行不通的。没有相关的追踪点。又查了一下ss,至少下面这个小脚本可以达到我的目的:

找出到底是哪个用户、什么进程在连接某个特定的端口/IP:

这个脚本的逻辑在于,使用while循环运行ss -tpn '(dport = :3476 or dport = :3477)',这个命令可以检查是否又向外连接3476或3477端口的socket,如果有的话,它会输出相关的进程的程序名称(python3,如下),PID (17939)。

然后使用一串grep、awk命令获取PID,如果找到的话就运行ps -f -www -p $PID ,然后就可以看到哪个用户,哪个程序发起了这个特定的连接。

Avatar

专业Linux/Unix/Windows系统管理员,开源技术爱好者。对操作系统底层技术,TCP/IP协议栈以及信息系统安全有强烈兴趣。电脑技术之外,则喜欢书法,古典诗词,数码摄影和背包行。

Sidebar