故事是这样的。
某日,销售来电:发布出去的程序运行错误,日志报告端口(程序使用端口27015)被占用了,机器重启多次不能恢复。
于是远程里一下,使用如下方法:
1、启动cmd
2、使用netstat命令,输出结果到文本
D:\>netstat -nab > d:\1.txt
3、使用笔记本查找
D:\>notepad d:\1.txt
//
TCP 127.0.0.1:29015 0.0.0.0:0 LISTENING
[NetSummary.exe]
我们使用的端口为“27015”,为啥是这个呢,hehe
发现苹果充电服务程序使用了这个端口。
询问销售,他一直在给他的苹果手机充电... ... 我默默的看了看我的Android
另,netstat 命令的参数
显示协议统计和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]-a 显示所有连接和侦听端口。
-b 显示在创建每个连接或侦听端口时涉及的可执行程序。
在某些情况下,已知可执行程序承载多个独立的
组件,这些情况下,显示创建连接或侦听端口时涉
及的组件序列。此情况下,可执行程序的名称
位于底部[]中,它调用的组件位于顶部,直至达
到 TCP/IP。注意,此选项可能很耗时,并且在您没有
足够权限时可能失败。
-e 显示以太网统计。此选项可以与 -s 选项结合使用。
-f 显示外部地址的完全限定域名(FQDN)。
-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 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
interval 重新显示选定的统计,各个显示间暂停的间隔秒数。
按 CTRL+C 停止重新显示统计。如果省略,则 netstat
将打印当前的配置信息一次。
或者,获取占用端口程序名称使用如下命令
1、启动cmd
2、获取程序进程id
D:\>netstat -aon | findstr "29015"
TCP 127.0.0.1:29015 0.0.0.0:0 LISTENING 5700
3、查看名称
D:\>tasklist | findstr "5700"
NetSummary.exe 5700 Console 1 12,404 K
或者编辑一个脚本,名为port.bat,内容如下:
@echo off
for /f "delims=" %%i in ('netstat -ano^|findstr %1') do (set a=%%i)
tasklist|findstr "%a%"
echo %1
pause
运行效果如图: