在日常工作中,经常会碰到启动某个程序时,提示某个端口已经被占用,导致程序无法正常启动。 或者在未正常关闭程序的情况下,端口仍然被占用。那么在Windows下如何查看端口占用情况?以及如何根据端口查找进程,如何释放端口占用呢?
Windows查看端口占用情况(Netstat命令)
netstat [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval] 命令中各选项的含义如下: -a 显示所有socket,包括正在监听的。 -n 以数字形式显示地址和端口号。 -r 显示核心路由表,格式同“route -e”。 -t 显示当前连接卸载状态。 -v 显示正在进行的工作。 -p proto 显示proto指定的协议的连接。 -b 显示在创建每个连接或侦听端口时涉及的可执行程序。 -e 显示以太网统计。此选项可以与 -s 选项结合使用。 -f 显示外部地址的完全限定域名(FQDN)。 -o 显示拥有的与每个连接关联的进程PID。 -q 显示所有连接、侦听端口和绑定的非侦听 TCP 端口。 -s 显示每个协议的统计。 -x 显示 NetworkDirect 连接、侦听器和共享端点。 -y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。 interval 重新显示选定的统计,各个显示间暂停的 间隔秒数。按 CTRL+C 停止重新显示统计。如果省略,则 netstat 将打印当前的配置信息一次。
1、CMD命令下查看所有所有端口:netstat -ano
2、查看指定端口占用的PID号:netstat -ano |findstr "端口号
Windows查看PID号的进程(Tasklist命令)
tasklist [/s <Computer> [/u [<Domain>\]<UserName> [/p <Password>]]] [{/m <Module> | /svc | /v}] [/fo {table | list | csv}] [/nh] [/fi <Filter> [/fi <Filter> [ ... ]]] 命令中各选项的含义如下: /S <computer> 指定连接到的计算机或IP地址,默认本机。 /u [<Domain>\]<UserName> 指定使用哪个用户执行这个命令。 /P [password] 为指定的用户指定密码。 /M [module] 列出调用指定的DLL模块的所有进程。如果没有指定模块名,显示每个进程加载的所有模块。 /SVC 显示每个进程中的服务信息,当/fo参数设置为table时有效。 /V 显示详细信息。 /FI filter 显示一系列符合筛选器指定的进程。 /FO format 指定输出格式,有效值:TABLE、LIST、CSV。 /NH 指定输出中不显示栏目标题。只对TABLE和CSV格式有效。
1、查找到PID的进程:tasklist|findstr "PID"
Windows终止进程(Taskkill命令)
TASKKILL [/S system [/U username [/P [password]]]] {[/FI filter] [/PID processid | /IM imagename]} [/F] [/T] 参数列表: /S system 指定要连接到的远程系统。 /U [domain\]user 指定应该在哪个用户上下文 执行这个命令。 /P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。 /F 指定要强行终止的进程。 /FI filter 指定筛选进或筛选出查询的的任务。 /PID process id 指定要终止的进程的PID。 /IM image name 指定要终止的进程的映像名称。通配符 '*'可用来指定所有映像名。 /T Tree kill: 终止指定的进程和任何由此启动的子进程。 /? 显示帮助/用法。
1、通过PID终止进程:taskkill /F /PID "PID"
2、通过进程名称终止进程:taskkill /F /IM 程序名称(同名的会批量结束)
目前有 0 条评论