linux – 由lsof找到但不是由netstat发现的套接字

前端之家收集整理的这篇文章主要介绍了linux – 由lsof找到但不是由netstat发现的套接字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用尽文件描述符的应用程序,显然是通过打开套接字,但我无法确切地知道这些套接字的作用.这些出现在lsof输出
java    9689 appuser 1010u  sock       0,5          263746675 can't identify protocol
java    9689 appuser 1011u  sock       0,5          263746676 can't identify protocol
java    9689 appuser 1012u  sock       0,5          263746677 can't identify protocol
java    9689 appuser 1014u  sock       0,5          263746678 can't identify protocol
java    9689 appuser 1015u  sock       0,5          263746679 can't identify protocol
java    9689 appuser 1016u  sock       0,5          263746681 can't identify protocol

并在/ proc / $PID / fd中

lrwx------ 1 appuser appuser 64 Jun 23 11:49 990 -> socket:[263732085]
lrwx------ 1 appuser appuser 64 Jun 23 11:49 991 -> socket:[263732086]
lrwx------ 1 appuser appuser 64 Jun 23 11:49 992 -> socket:[263735307]
lrwx------ 1 appuser appuser 64 Jun 23 11:49 993 -> socket:[263732088]
lrwx------ 1 appuser appuser 64 Jun 23 11:49 995 -> socket:[263735308]
lrwx------ 1 appuser appuser 64 Jun 23 11:49 996 -> socket:[263735309]
lrwx------ 1 appuser appuser 64 Jun 23 11:49 997 -> socket:[263745434]
lrwx------ 1 appuser appuser 64 Jun 23 11:49 998 -> socket:[263745435]
lrwx------ 1 appuser appuser 64 Jun 23 11:49 999 -> socket:[263745436]

但netstat -a中没有类似的输出.

这些插座是什么,我怎样才能知道它们的作用?

编辑:我已经尝试按照lsof FAQ中的建议运行grep $SOCKET / proc / net,其中$SOCKET例如是263746679,但是也没有给出任何结果.

作为背景,应用程序是多个任务的容器,其中包括执行网络调用.我需要挑出一个狂暴的那个,但直到我发现那些插座与谁通信,我才被卡住了.

解决方法

如果您创建套接字,但从不connect()或bind(),则可能会发生这种情况.你最好的选择可能是strace(-fF)应用程序,然后用lsof的输出交叉引用来确定导致问题的套接字.作为一种额外的调试方法:如果你用调试信息包装你的套接调用并将它们写到/ dev / null,它将出现在strace中,而不会给你带来欢闹的大型日志文件.

猜你在找的Linux相关文章