文档首页> 互联网资讯> Linux查看端口:一眼定位监听与占用

Linux查看端口:一眼定位监听与占用

发布时间:2026-08-30 06:26       

linux 查看端口

在 Linux 系统运维中,“查看端口”是非常基础但非常重要的操作。通过查看端口,可以判断某个服务是否正在监听、哪个进程占用了指定端口、端口是否对外开放,以及是否存在异常连接。常见场景包括排查 Web 服务、数据库服务、代理软件、容器服务以及端口冲突问题。

一、端口是什么?

端口可以理解为服务器上不同网络服务之间的“入口编号”。例如:

  • 80:HTTP 服务常用端口
  • 443:HTTPS 服务常用端口
  • 22:SSH 远程连接端口
  • 3306:MySQL 数据库端口
  • 6379:Redis 端口
  • 5432:PostgreSQL 端口

端口本身并不代表服务一定正常,它只是说明某个程序正在通过该端口接收或发送网络数据。因此,在排查问题时,通常要同时查看端口状态、进程信息和防火墙规则。


二、使用 ss 查看端口

ss 是目前 Linux 中推荐使用的端口查看命令,比传统的 netstat 更高效。

1. 查看所有监听端口

ss -tulnp

参数含义:

  • -t:查看 TCP 端口
  • -u:查看 UDP 端口
  • -l:只显示监听状态的端口
  • -n:显示数字格式,不解析域名
  • -p:显示进程 PID 和进程名

输出示例:

tcp   LISTEN 0 128 0.0.0.0:22   0.0.0.0:*   users:(("sshd",pid=1024,fd=3))
tcp   LISTEN 0 128 0.0.0.0:80   0.0.0.0:*   users:(("nginx",pid=2048,fd=6))

这表示 SSH 服务正在监听 22 端口,Nginx 正在监听 80 端口。

2. 查看指定端口

例如查看 80 端口:

ss -lntp | grep :80

查看 3306 端口:

ss -lntp | grep :3306

如果没有任何输出,通常说明该端口当前没有处于监听状态。

3. 查看已建立连接

ss -tnp

也可以查看 ESTABLISHED 状态连接:

ss -tnp state established

这适合排查当前有哪些远程 IP 正在连接服务器。


三、使用 netstat 查看端口

部分系统中仍可使用 netstat,但它已经逐渐被 ss 替代。

1. 查看所有监听端口

netstat -tulnp

2. 查看 TCP 监听端口

netstat -lntp

3. 查看 UDP 端口

netstat -lunp

4. 查看指定端口

netstat -tulnp | grep :80

如果系统提示找不到命令,可以尝试安装:

sudo apt install net-tools

或:

sudo yum install net-tools

四、使用 lsof 查看端口占用

lsof 可以查看哪个进程打开了某个端口,适合排查端口被谁占用。

1. 查看指定端口

sudo lsof -i :80

2. 查看 TCP 端口

sudo lsof -i tcp:22

3. 查看 UDP 端口

sudo lsof -i udp:53

4. 查看某个进程打开的端口

sudo lsof -p 1234

其中 1234 是进程 PID。

如果系统没有 lsof,可以安装:

sudo apt install lsof

或:

sudo yum install lsof

五、使用 fuser 查找端口占用进程

fuser 适合快速定位端口对应的进程。

sudo fuser -n tcp 80

输出结果通常是 PID,例如:

1234

也可以显示更详细信息:

sudo fuser -v -n tcp 80

如果要结束占用端口的进程,需要谨慎操作:

sudo fuser -k -n tcp 80

该命令会终止使用 80 端口的进程,生产环境中不建议随意执行。


六、查看端口监听地址含义

查看端口时,经常会看到以下几种地址:

1. 0.0.0.0:80

表示监听所有 IPv4 地址,外部网络可能可以访问该端口。

2. 127.0.0.1:3306

表示只监听本机,外部服务器无法直接访问,通常更安全。

3. :::80

表示监听 IPv6 地址。

4. localhost:6379

表示只允许本机访问 Redis 端口。

如果服务只监听 127.0.0.1,但外部无法访问,不一定是服务异常,也可能是配置限制。


七、查看防火墙是否放行端口

即使服务正在监听端口,外部仍然无法访问,常见原因是防火墙没有放行。

1. 使用 ufw

查看防火墙状态:

sudo ufw status

放行端口:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

2. 使用 firewall-cmd

查看状态:

sudo firewall-cmd --state

查看已开放端口:

sudo firewall-cmd --list-ports

放行端口:

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

3. 使用 iptables

sudo iptables -L -n

如果使用 nftables,可以查看:

sudo nft list ruleset

八、查看外部端口是否开放

在服务器上查看监听端口,只能说明服务在本地是否开启。若想确认外部能否访问,可以在另一台机器上测试。

例如:

telnet 服务器IP 80

或使用:

nc -zv 服务器IP 80

还可以使用:

curl http://服务器IP:80

如果连接失败,需要检查:

  1. 服务是否启动;
  2. 端口是否监听;
  3. 防火墙是否放行;
  4. 云安全组是否开放;
  5. 服务是否只监听本机地址。

九、常见端口排查思路

如果某个端口无法访问,可以按以下顺序排查:

1. 确认服务是否运行

systemctl status nginx
systemctl status sshd

2. 确认端口是否监听

ss -lntp | grep :80

3. 确认进程是否正常

ps -ef | grep nginx

4. 确认防火墙是否放行

sudo ufw status

5. 确认外部测试是否成功

curl http://服务器IP:80

十、常用命令速查表

目的 命令
查看所有监听端口 ss -tulnp
查看 TCP 监听端口 ss -lntp
查看 UDP 监听端口 ss -lunp
查看指定端口 ss -lntp \| grep :80
查看端口占用进程 lsof -i :80
查看 TCP 端口占用 fuser -n tcp 80
查看防火墙状态 ufw status
测试端口连通性 nc -zv IP 端口

总结

Linux 查看端口主要可以使用 ssnetstatlsoffuser 等命令,其中 ss -tulnp 是最常用、最推荐的方式。查看端口时,不仅要关注端口是否监听,还要关注监听地址、占用进程、防火墙规则和外部访问情况。只有把这些信息结合起来,才能准确判断服务是否正常,以及端口无法访问的真正原因。