当我从 Windows7/Vista 向 Linux Red Hat 4 发送 HTTPS 请求时,该netstat -an <my_ip>命令显示FIN_WAIT1ORSYNC_RECV状态。
为什么会出现这些状态而不是ESTABLISHED?
shell命令netstat -p不显示pid.它显示" - ",如下所示:
tcp 0 0 *:2181 *:53837 ESTABLISHED -
Run Code Online (Sandbox Code Playgroud)
为什么?
虽然我使用root登录,它仍然显示" - ".
我需要确定与TCPView可以做的类似的每进程网络使用情况统计信息.
示例http://img513.imageshack.us/img513/861/6601f15814544055a590e26.png
因此,在你拍我发布这个问题的副本或者这个问题之前,我想指出的是,这些问题都没有一个彻底的答案可以帮助我实际做到这一点.
我一直在做研究,很明显有许多方法可以列出活动连接及其相关进程,无论是netstat还是其他Windows API,如IpHlpAPI.dll.
现在,从谷歌的做法来看,我没有找到太多 - 除了这些模糊的术语:GetPerTcpConnectionEStats和GetPerTcp6ConnectionEStats.大概分别用于TCP over IPv4和IPv6.现在我正在阅读它所谓的能够做我需要做的事情.但是,这仍然留下了UDP.这些也不适用于TCPViewer工作的XP系统.
我会对使用TCP的那些感到满意,但问题是,我似乎无法找到如何从C#中使用它们的任何示例.
所以我想这一切归结为这几个问题:
这一点的全部意义在于查看进程本身的独立带宽使用情况.不计算系统总带宽使用情况.
提前感谢任何和所有答案.
此问题类似于网络端口打开,但没有附加进程?和netstat显示没有pid的侦听端口,但lsof没有.但是他们的答案无法解决我的问题,因为它太奇怪了.
我有一个服务器应用程序lps,它等待端口8588上的tcp连接.
[root@centos63 lcms]# netstat -lnp | grep 8588
tcp 0 0 0.0.0.0:8588 0.0.0.0:* LISTEN 6971/lps
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,什么是错的监听套接字,但是当我连接几千测试客户端(由另一位同事写的)服务器,无论是2000,3000,或4000一直存在着5个客户端(这也是随机连接并向服务器发送登录请求,但无法接收任何响应.以3000个客户为例.这是netstat命令给出的:
[root@centos63 lcms]# netstat -nap | grep 8588 | grep ES | wc -l
3000
Run Code Online (Sandbox Code Playgroud)
这是lsof命令输出:
[root@centos63 lcms]# lsof -i:8588 | grep ES | wc -l
2995
Run Code Online (Sandbox Code Playgroud)
这5个连接在这里:
[root@centos63 lcms]# netstat -nap | grep 8588 | grep -v 'lps'
tcp 92660 0 192.168.0.235:8588 192.168.0.241:52658 ESTABLISHED -
tcp 92660 0 192.168.0.235:8588 192.168.0.241:52692 ESTABLISHED -
tcp …Run Code Online (Sandbox Code Playgroud) 我通常使用fusion命令来检查打开特定 tcp 端口的 pid,如下所示
fuser 22/tcp //To get pid opening the 22 tcp port
Run Code Online (Sandbox Code Playgroud)
我有一个运行嵌入式Linux 的参考板。它已经打开 22 tcp 端口用于 ssh 连接。但fuser 不显示任何有关22 端口的输出。所以我尝试了另一个 ssh 守护进程来打开 322 端口,然后尝试使用 fusionr 检查 pid,它工作正常。
root@imx6qsabreauto:~# netstat -nlt | grep 22
tcp 0 0 0.0.0.0:4224 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:322 0.0.0.0:* LISTEN
tcp 0 0 :::322 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
root@imx6qsabreauto:~# fuser 322/tcp
351
root@imx6qsabreauto:~# ps -ef | grep 351
root 351 1 0 01:46 ? 00:00:00 /usr/sbin/dropbear …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我发现send()TCP 连接上的调用偶尔会被阻止。每当这种情况发生时,TCP 连接的 Recv-Q 从netstat输出中会非常高:
tcp 314238 0 10.8.8.21:47302 10.8.8.11:5672 ESTABLISHED
tcp 313276 0 10.8.8.21:47294 10.8.8.11:5672 ESTABLISHED
Run Code Online (Sandbox Code Playgroud)
什么可能导致 TCP 连接的接收缓冲区被填满?它如何导致我的send()呼叫无限期挂起?
ps 这可能相关,也可能不相关,这个 TCP 连接位于我的应用程序和 RabbitMQ 服务器之间。
我今天遇到一个问题:
当我启动HDP docker容器时,发生错误:
监听TCP 0.0.0.0:8086:绑定:地址已在使用中
根据错误消息,我知道端口8086已被使用,因此我尝试了一些命令来确定哪个程序正在使用端口8086。
lsof -i:8086
lsof -i tcp:8086
lsof | grep 8086
但是以上所有命令都没有输出!
我对此感到非常困惑,在Google上进行了一些搜索之后,我尝试了另一个命令:
netstat -pna | grep 8086
我从此命令获得正确的输出。
我知道lsof和之间的一些区别netstat,但是我真的不知道为什么我不能从lsof -i:8086?获得任何输出。
这是我从Google搜索到的两个命令之间的一些区别:
netstat(net statistic)是基于连接的,它显示NW连接(udp / tcp端口),路由表,接口,多播成员身份等。
lsof(打开文件列表)是基于应用程序的,类似于netstat + ps,在那里您可以看到所有访问的端口,NW连接等。但是lsof包括诸如本地emacs窗口终端会话(tty dev / pts / n)不属于netstat
手册netstat(8)页指出“显示侦听和非侦听(对于 TCP,这意味着已建立的连接)套接字。使用 --interfaces 选项,显示未标记的接口”
什么是非监听套接字与监听套接字?还占用端口吗?或者该端口是否可以被其他程序免费使用?
我希望仅收集运行此 netstat 命令时输出的 PID 值:
netstat -a -o -n -p tcp | findstr -i "CLOSE_WAIT"
Run Code Online (Sandbox Code Playgroud)
我的目的是使用 PID 并创建一个脚本,该脚本将运行taskkill /PID pidfoundhere以删除任何具有 CLOSE_WAIT 状态的套接字。
我做了一些研究,发现了几个地方,人们建议使用这些地方netstat来检查特定进程正在使用的端口。但这是我得到的:
myMac:~/Documents$ netstat -ap tcp | grep -i "listen"
tcp4 0 0 localhost.mysql *.* LISTEN
Run Code Online (Sandbox Code Playgroud)
localhost.mysql端口号是什么意思??我期待一个像 3306 这样的 4 位数字。有什么想法吗?