Linux 释放占用端口

场景

在使用 Swoole 扩展库的 WebSocket 服务时,直接退出终端,但是 WebSocket 使用的端口依然坚挺的在被占用着。 导致再次启动 WebSocket 服务失败。

释放占用端口

释放端口,需要完成三步操作:

  1. 找到系统当前所有的端口
  2. 找到对应端口在系统中的进程 ID(PID)
  3. 使用 kill -9 [PID] 命令结束进程

1. 找到系统当前所有的端口

使用 netstat 命令查找本机各端口的网络连接情况

$ netstat -tln

#结果如下
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:1997            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN
tcp6       0      0 :::80                   :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN
tcp6       0      0 :::3306                 :::*                    LISTEN

这里我们要找的是 1997 端口

2. 找到对应端口在系统中的进程 ID(PID)

依据查找到的 1997 端口找到对应进程, lsof -i :1997, 注意 : 冒号不要漏掉了

lsof -i:1997

#结果如下
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
php     29416 root    3u  IPv4 101371054      0t0  TCP *:gdp-port (LISTEN)
php     29416 root   16u  IPv4 101405652      0t0  TCP VPS-OJ26RUCK:gdp-port->116.228.152.202:procos-lm (ESTABLISHED)
php     29416 root   19u  IPv4 101391904      0t0  TCP VPS-OJ26RUCK:gdp-port->116.228.152.202:dsom-server (ESTABLISHED)

3. 使用 kill -9 [PID] 命令结束进程

通过 lsof 命令我们找到了进程的 PID: 29416,接下来就是使用 kill -9 [PID] 把进程结束就好了

$ kill -9 29416

到这里就 OK 了,不过为了保险起见,再次执行 netstat -tln 确认是否结束了端口占用

参考:

发表评论

电子邮件地址不会被公开。 必填项已用*标注