文档首页> 通用教程> 解决Windows系统和Linux系统中端口被占用的问题

解决Windows系统和Linux系统中端口被占用的问题

发布时间:2024-12-09 01:54        更新时间:2025-02-16 09:31

一、Windows 系统中查询端口占用和清除端口占用的程序

1. 查询端口占用的进程ID

  1. 提升权限:右键点击“开始”菜单中的“命令提示符”,选择“以管理员身份运行”。
  2. 查询端口占用
    • 显示所有端口占用情况:
      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 下端口被占用问题解决办法

  1. 确认端口是否被占用
    netstat -tlnp | grep 9704
  2. 查看端口被哪个进程占用
    lsof -i:9704
  3. 确认无误后,终止进程
    kill -9 <PID>