【问题标题】:How can I know how long a socket connection(tcp or udp) has been established in linux? [closed]我如何知道在 linux 中建立了多长时间的套接字连接(tcp 或 udp)? [关闭]
【发布时间】:2014-10-08 09:52:04
【问题描述】:

我想知道一个套接字连接在linux中持续了多长时间,或者当一个套接字连接建立时,有什么想法吗?

【问题讨论】:

  • 看看超级用户superuser.com/questions/565991/…这个类似的问题
  • 是的,同样的问题。但没有正确答案。
  • Aw 是的,你是对的,尽管答案还可以 :( 我的第二个猜测与使用 lsof -iTCP 获取进程的 PID 和套接字的文件描述符有关,然后使用 @987654323 @,它为您提供了一些时间戳(atime、mtime、ctime),但我不确定这些是否可靠。
  • 如果您提到为什么您需要此类信息,我们可能会提供更多帮助...
  • @javidcf:在我的系统上,这些时间等于系统启动时间,这完全没用......

标签: linux bash networking


【解决方案1】:

这可能比您希望的更重性能和手动操作...但是...一种可能性是使用 iptables 记录新连接并交叉引用日志和内核日志中的 ip/端口组合。

使用 iptables 启用连接日志记录:

iptables -I INPUT -m state --state NEW -j LOG --log-prefix "New Connection: "
iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "New Connection: "

查找当前连接:

# netstat -an
...
tcp        0      0 10.0.2.15:38272         74.125.143.99:80        TIME_WAIT  
tcp        0      0 10.0.2.15:41289         173.194.71.94:80        TIME_WAIT  
...

然后可以检查 /var/log/kern.log 中的日志以获取套接字初始化。下面我 grep 为客户端端口,因为它是最有意义的数字。

# grep 41289 /var/log/kern.log
Oct 12 01:24:24 hamilton kernel: [49068.994676] New Connection: IN= OUT=eth0 SRC=10.0.2.15 DST=173.194.71.94 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=48013 DF PROTO=TCP SPT=41289 DPT=80 WINDOW=29200 RES=0x00 SYN URGP=0 

【讨论】:

    猜你喜欢
    • 2020-04-05
    • 2016-01-16
    • 1970-01-01
    • 2016-06-03
    • 2012-01-10
    • 2012-08-26
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多