解决Windows系统和Linux系统中端口被占用的问题
发布时间:2024-12-09 01:54       
更新时间:2025-02-16 09:31
一、Windows 系统中查询端口占用和清除端口占用的程序
1. 查询端口占用的进程ID
-
提升权限:右键点击“开始”菜单中的“命令提示符”,选择“以管理员身份运行”。
-
查询端口占用:
-
显示所有端口占用情况:
netstat -a -n
-
显示端口占用及进程PID:
netstat -ano
-
查询特定端口(如80端口)的占用情况:
netstat -aon | findstr "80"
示例输出:TCP 127.0.0.1:9080 0.0.0.0:0 LISTENING 4632
-
2. 查看端口号所对应的应用程序
-
查询进程ID对应的程序:
tasklist | findstr "4632"
-
或者使用更详细的过滤条件:
tasklist /fi "pid eq 4632"
示例输出:GROOVE.EXE 4632 Console 1 84.880 K
说明:GROOVE.EXE
占用了80端口,这是一个IE的ActiveX控件。
3. 终止进程
-
终止指定PID的进程:
taskkill /pid 4632 /F
-
或者通过程序名终止进程:
taskkill /f /t /im GROOVE.exe
-
再次查询是否成功终止:
tasklist | findstr "4632"
如果返回为空,则表示进程已成功终止。
二、Linux 系统中查询端口占用和清除端口占用的程序
1. 查询端口号占用及进程信息
-
查询特定端口(如80端口)的占用情况:
lsof -i:80
示例输出:复制 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd 5014 root 3u IPv4 14346 TCP server2:http (LISTEN)
2. 根据进程号查看进程对应的可执行程序
-
查询进程号对应的详细信息:
ps -f -p 5014
示例输出:复制 UID PID PPID C STIME TTY TIME CMD root 5014 1 0 17:26 ? 00:00:00 /usr/local/apache/bin/httpd -k
3. 查询动态链接
-
查询可执行程序的动态链接库:
ldd /usr/local/apache/bin/httpd
4. 查询端口号占用的进程ID
-
查询特定端口的占用情况:
netstat -tlnp | grep 80
示例输出:tcp 0 0 192.168.33.10:80 0.0.0.0:* LISTEN 5014/httpd
-
提取进程ID:
netstat -tlnp | grep 80 | awk '{print $7}' | awk -F/ '{print $1}'
示例输出:5014
5. 一次性清除占用端口的程序
-
强制终止占用端口的进程:
lsof -i:80 | grep -v "PID" | awk '{print "kill -9", $2}' | sh
6. 手工终止进程
-
终止指定进程ID的进程:
kill 5014
-
如果无法终止,强制终止:
kill -9 5014
总结:Linux 下端口被占用问题解决办法
-
确认端口是否被占用:
netstat -tlnp | grep 9704
-
查看端口被哪个进程占用:
lsof -i:9704
-
确认无误后,终止进程:
kill -9 <PID>