win32环境下侦测端口占用情况

    有时候在进行开发或者安装一些框架时,经常会出现端口被占用的情况,导致安装失败。这是让人非常郁闷的事情,今天我安装Alfresco的时候就出现过这样的问题,8100端口被占用,下面给我的解决方案。
    首先利用指令查看端口使用情况,在CMD下输入netstat -anb能看到本机所有开放端口以及被使用的情况,即是使用端口进程的名称,我查到的使用8100的进程是service.exe。
    接着我想把它kill掉,记得kill指令要跟上的好像是进程pid,于是又百度了一翻,知道了查看占用端口进程pid的指令为netstat -ano|findstr "8100",得到了占用8100端口进程的pid为4044。
    再往下,不用说,就是杀之,查看了下经验贴,说是使用ntsd -c q -p PID即可,我在我的机器上试了下,貌似不能识别,这个指令是从windows 2000系统就开始有的,自动带有debug权限,不知道是不是win 7屏蔽了,囧。
    无奈换了另外一种方法,使用taskkill指令,在cmd里面,输入taskkill -im service.exe /f 或者taskkill -pid 4044 /f即可。

其他关于这些指令的参考资料见下文,转自http://003317.blog.51cto.com/2005292/531436
端口查看命令
利用命令查看端口及对应程序
利用 netstat 命令查看本机开放端口 netstat 是 windows 自带命令,用于查看系统开放的端口,主要参数只有 -a 和 -n ,前者表示显示所有连接和侦听端口,而后者表示以数字格式显示地址和端口号。
  在 “ 命令提示符 ” 中输入 “ netstat -an ”, 即可显示本机所有开放端口。
其中 active connections 是指当前本机活动连接,
proto  是指连接使用的协议名称
local address  是本地计算机 IP 地址和连接正在使用的端口号
foreign address  是指连接此端口的远程计算机的 IP 地址与端口号
state   则表示 TCP 连接状态
注意如果后面的 UDP 协议有异常连接,则可能有木马正使用端口号,正处于监听状态,如冰河木马的默认监听端口号是 7626
利用 netstat 命令查找打开可疑端口的恶意程序
  先用命令提示符 " netstat -ano " 命令显示端口状态,再在结果中找到可疑端口,然后根据其 PID 在输入 “ tasklist ” 命令显示中查找其对应程序,就可知道其程序名,进而查明程序的来源,采取适当的措施。
直接查看端口与程序 ( 以上两个命令的结合效果 )
  在命令提示符后输入 “ netstat -anb ” 回车,即可显示所有端口及所对应的进程信息,用来查找木马非常方便
用第三方端口查看工具 FPORT
fport 是 foundstone 出品的一个用来查看系统所有打开 TCP/IP 和 UDP 端口,及它们对应程序的完整路径, PID 标识,进程名称等信息的小工具



怎么查看端口占用情况?
       开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列"
        经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用
假如我们需要确定谁占用了我们的9050端口
1、Windows平台
在windows命令行窗口下执行:
C:\>netstat -aon|findstr "9050"TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       2016
看到了吗,端口被进程号为2016的进程占用,继续执行下面命令:
C:\>tasklist|findstr "2016"tor.exe                     2016 Console                 0     16,064 K
很清楚吧,tor占用了你的端口。

Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
TCP    127.0.0.1:1029         0.0.0.0:0              LISTENING
TCP    169.254.40.87:139      0.0.0.0:0              LISTENING
TCP    192.168.203.1:139      0.0.0.0:0              LISTENING
TCP    192.168.204.1:139      0.0.0.0:0              LISTENING
TCP    222.50.163.57:1960     219.133.60.243:8000    ESTABLISHED
TCP    222.50.163.57:2006     124.115.1.109:443      TIME_WAIT
TCP    222.50.163.57:2007     124.115.3.90:443       ESTABLISHED
netstat 显示协议统计信息和当前 TCP/IP 网络连接。

NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]

  -a            显示所有连接和监听端口。
  -b            显示包含于创建每个连接或监听端口的
                可执行组件。在某些情况下已知可执行组件
                拥有多个独立组件,并且在这些情况下
                包含于创建连接或监听端口的组件序列
                被显示。这种情况下,可执行组件名
                在底部的 [] 中,顶部是其调用的组件,
                等等,直到 TCP/IP 部分。注意此选项
                可能需要很长时间,如果没有足够权限
                可能失败。
  -e            显示以太网统计信息。此选项可以与 -s
                选项组合使用。
  -n            以数字形式显示地址和端口号。
  -o            显示与每个连接相关的所属进程 ID。
  -p proto      显示 proto 指定的协议的连接;proto 可以是
                下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
                如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议
之一:
                IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
  -r            显示路由表。
  -s            显示按协议统计信息。默认地,显示 IP、
                IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
                -p 选项用于指定默认情况的子集。
  -v            与 -b 选项一起使用时将显示包含于
                为所有可执行组件创建连接或监听端口的
                组件。
  interval      重新显示选定统计信息,每次显示之间
                暂停时间间隔(以秒计)。按 CTRL+C 停止重新
                显示统计信息。如果省略,netstat 显示当前
                配置信息(只显示一次)

关于taskkill的资料详见百度文库:http://wenku.baidu.com/view/36ac7251f01dc281e53af073.html
关于ntsd详见:http://wenku.baidu.com/view/6ab36019227916888486d76f.html

猜你喜欢

转载自casfe.iteye.com/blog/1591727