windows端口异常占用的处理 |
问题现象 服务器应用使用的端口被异常占用导致服务启动失败,例如:windows上安装的tomcat无法启动,tcp 80端口已经被其它应用占用。 问题原因 应用程序需要使用的tcp/udp端口被其它程序、或者病毒木马占用。 排查方法 使用netstat -ano命令可以找出占用端口的进程id,而后使用tasklist /svc命令找出对应的进程。 如下给出一例安装tomcat后,启动tomcat提示端口被占用的处理过程。 1.使用netstat -ano |find ":80" 看到占用端口的进程id是4,注:请根据实际情况修改端口 2.使用tasklist /svc| find "4" 看到是系统进程。 注:请根据实际情况修改进程id 3.尝试关闭了iis ,iisreset /stop 4.但是发现80端口仍然被占用。于是使用curl -i 127.0.0.1 查看返回的server是 microsoft-httpapi/2.0 而不是server: microsoft-iis/7.5 能够使用microsoft-httpapi/2.0的只能是微软的产品。检查是否有安装sql server ,如果有尝试关闭sql server reporting service这个服务。 关闭后再使用curl -i 127.0.0.1 就提示80端口无法连接,说明端口已经被释放。 注意:如果没有安装curl还可以使用telnet 127.0.0.1 80 执行完,ctrl c终止就会出现下面图片的样子,也可以看到server:microsoft-httpapi/2.0 ,当然仅靠这个是不能判断是哪个程序的。只能根据此判断是微软的应用占用了。具体还需要看服务器上实际安装了哪些微软的应用。 |