网络通信依赖于本地的端口服务,当端口被占用时程序会报错。Windows 下的端口排查过程与linux类似,先通过 netstat 网络会话定位进程ID,再通过进程ID定位进程信息。
c:\> netstat -anop tcp | findstr 1080TCP 0.0.0.0:1080 0.0.0.0:0 LISTENING 28608
最后一列是进程号,通过进程号可以定位进程。
c:\> tasklist | findstr 28608python.exe 28608 Console 1 20,600 K
如果安装了微软的 sysinternal 工具包,可以使用 pslist 定位进程。
c:\> pslist -x 28608Name Pid VM WS Priv Priv Pk Faults NonP Pagepython 28608 4194303 20600 11844 12064 5439 14 136Tid Pri Cswtch State User Time Kernel Time Elapsed Time20560 10 915 Wait:UserReq 0:00:00.046 0:00:00.078 0:06:44.415
pslist 可以查看更多进程信息,显示CPU时间、内存占用。
命令行版本的程序相对图形化的工具来说,显得太简陋。微软 sysinternal 工具包中的另外两款图形化工具也能胜任这项工作,它们是 tcpview 和 procexp
tcpview 可以通过过滤快速定位端口和进程ID :

然后再通过 procexp 定位进程查看更多进程信息,procexp 只支持通过进程名称过滤。

通过 procexp 可以查看进程属性,这里可以查看到进程的所有网络会话。

以上例子不太明显,我们以向日葵终端为例,可以查看进程的所有网络会话,这在设置防火墙规则时非常有帮助。

procexp 除了可以用来查看进程详细信息,还可以代替任务管理器,它可以对系统资源进行监控,比如查看 IO 占用、网络吞吐量:

sysinternal 工具包下载地址:
https://learn.microsoft.com/en-us/sysinternals/
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




