Skip to content

查看 TCP 端口占用情况#


1. 使用 netstat 命令 (适用于较旧系统,需安装 net-tools 包)

sudo netstat -tlnp

• 参数解释:

-t:仅显示 TCP 端口

-l:仅显示监听中的端口

-n:以数字形式显示地址和端口(不解析主机名或服务名)

-p:显示占用端口的进程信息(需要 root 权限)

示例输出:

Proto Recv-Q Send-Q Local Address    Foreign Address  State    PID/Program name
tcp        0      0 0.0.0.0:22       0.0.0.0:*        LISTEN   1234/sshd
tcp6       0      0 :::80            :::*             LISTEN   5678/nginx

2. 使用 ss 命令 (推荐,现代替代工具,更高效)

sudo ss -tlnp

• 参数解释:

-t:仅显示 TCP 端口

-l:仅显示监听中的端口

-n:以数字形式显示地址和端口

-p:显示进程信息(需要 root 权限)

示例输出:

State   Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
LISTEN  0       128     0.0.0.0:22           0.0.0.0:*       users:(("sshd",pid=1234,fd=3))
LISTEN  0       128     :::80                :::*            users:(("nginx",pid=5678,fd=6))

3. 使用 lsof 命令 (需安装 lsof 工具)

sudo lsof -i TCP -s TCP:LISTEN

• 参数解释:

-i TCP:仅显示 TCP 协议相关连接

-s TCP:LISTEN:仅显示监听状态的端口

示例输出:

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1234   root    3u  IPv4  12345      0t0  TCP *:22 (LISTEN)
nginx   5678   www     6u  IPv6  67890      0t0  TCP *:80 (LISTEN)

4. 查找特定端口的占用 例如查找 80 端口:

sudo ss -tlnp | grep ':80'
sudo netstat -tlnp | grep ':80'
sudo lsof -i :80

注意事项

  1. 权限问题:查看进程信息(-p 参数)通常需要 sudo 或 root 权限。
  2. 工具安装: • 若命令不存在,可安装对应包:

    sudo apt install net-tools   # 安装 netstat
    sudo apt install lsof       # 安装 lsof