示例场景:关闭了 tomcat ,其端口却一直处于占用状态,导致第二次启动tomcat的时候,一直提示端口被占用,所以需要释放所占用端口。
Windows
- 命令行输入:
netstat -ano
,列出所有端口的情况
在列表中我们观察被占用的端口,比如是49153,首先找到它。 - 命令行输入:
netstat -aon|findstr "端口"
,查看被占用端口对应的 PID。
记下最后一位数字,即 PID,这里是1008。 - 命令行输入:
tasklist|findstr "PID"
,找到PID对应的exe
或者打开任务管理器也能根据 PID 找到进程。打开任务管理器切换到进程选项卡,默认是没有打开 PID 列的,如果看不到 PID 这一列,如下图,将PID(进程标示符)前面的勾打上,点击确定。之后就能看到 PID 列了, 看一下1008对应的进程是谁,如果没有,就把下面的显示所有用户的进程前面的勾打上,就可以看到了,映像名称是svchost.exe,描述是,Windows的主进程,与上面命令查看的完全一致。 - 如果确定这个进程不用之后,右键就可以在进程管理器上关闭掉。由于这个进程是系统进程我们就不能关闭了。
Linux
必须使用root用户才能操作,不然无法看到端口的进程
- 输入
netstat -tln
,查看系统当前所有被占用端口 - 查看占用端口的进程编号,输入
lsof -i:9001
(不要忘了添加冒号)(需要lsof工具) - 杀进程:
kill -9 3340
(3340表示占用端口的进程编号) netstat -tln
检查是否关闭成功