一些本地进程正在连接和断开到端口 1234 上的 127.0.0.1。
我想记录与此端口(或服务器进程)的所有连接。
我试过了
ss -tpn | grep 1234
它显示一个列表,但随后停止;它不会继续记录新连接,因此我无法捕获套接字或所有者的 PID。
我可以使用什么工具来发现连接和断开套接字的PID?
答案1
有一个“监视”工具可以做到这一点,或者您可以
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
将代码附加到文件中并跟踪它。这可能会产生CPU使用率,但可能会帮助你找到你想要的东西。
Linux 监视命令
答案2
您可以使用两种工具来监视connect
Linux 上的 TCP 事件:
- tcpconnect.py在密件抄送工具中(pkgs.org,谴责)
- tcpconnect.bt在 bpftrace 中(pkgs.org,谴责)
两者之间的区别在于,前者提供了自定义输出的选项(例如,按 PID 或端口号过滤),而后者是一个更简单的工具,不提供花哨的选项。
对于您的用例,最简单的选项是安装 bcc 并运行:
tcpconnect.py -P 1234
如果您使用发行版的包管理器安装这些工具,请记住,某些发行版不会将它们放置tcpconnect
在/usr/bin
其他位置,而是将它们放置在其他位置/usr/share
。因此,如果找不到这些文件,请务必检查您的发行版放置这些文件的位置。
答案3
虽然ss
仅转储套接字统计信息,并且您需要模拟连续转储(使用watch
或while
循环),但netstat
具有连续模式(-c
)。
netstat -ntcp | grep ' 127.0.0.1:1234'
请注意,如果您只需要捕获客户端 pid,则 127... 之前的两个空格不是拼写错误。
示例输出:
$ netstat -ntcp | grep ' 127.0.0.1:1234'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:35720 127.0.0.1:1234 ESTABLISHED 22655/nc
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:35720 127.0.0.1:1234 ESTABLISHED 22655/nc
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
答案4
watch -n 1 -d 'lsof -n -itcp:1234'
不是日志记录,而是强大的实时监控和亮点......
$ man watch
- -n 1 - 每 1 秒
- -d - 突出显示差异
$ man lsof
- -n - 不解析 ip 到域。
- -itcp:1234 - 任何与 TCP 端口 1234 交互