在 Linux 中,你可以通过多种方式检查端口是否被某个服务占用、是否已监听或是否开放。以下方法适用于 CentOS、Ubuntu、Debian、AlmaLinux、RockyLinux 等系统。
一、使用 lsof 查看端口占用情况
适用于大多数系统,但需要安装 lsof(通常已预装)。
lsof -i:80
示例输出可能类似:
nginx 1234 root 6u IPv4 123456 0t0 TCP *:http (LISTEN)
说明:
- 程序
nginx正在监听 80 端口 - LISTEN 状态表示端口已开放
若提示 command not found
Ubuntu/Debian:
apt install -y lsof
CentOS/RHEL:
yum install -y lsof
二、使用 netstat 查看端口是否监听
netstat -ntulp | grep 80
说明:
-n:显示数字地址-t:显示 TCP-u:显示 UDP-l:仅显示监听状态 LISTEN-p:显示程序名
典型输出:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx
如果提示错误:
-bash: netstat: command not found
请安装 net-tools:
Ubuntu/Debian:
apt-get install -y net-tools
CentOS/RHEL:
yum install -y net-tools
三、使用 ss 查看端口(推荐新系统)
ss 是 netstat 的升级版,现代 Linux(CentOS 7+、Ubuntu 18+)都推荐使用。
ss -ntulp | grep 80
输出示例:
LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6))
✔ 快
✔ 默认带系统
✔ 推荐使用
四、使用 nmap 远程扫描端口(检查是否对外开放)
如果你想测试端口是否 外网可访问,可以使用 nmap:
nmap -p 80 your_server_ip
若输出:
80/tcp open http
表示 80 端口对外访问正常。
安装 nmap:
Ubuntu/Debian:
apt install -y nmap
CentOS/RHEL:
yum install -y nmap
五、查看防火墙是否放行端口(常见问题)
端口监听 ≠ 端口开放
你还需确保防火墙开放 80 端口。
5.1 检查 firewalld(CentOS 7+)
firewall-cmd --list-ports
开放 80 端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
5.2 Ubuntu ufw 防火墙
查看状态:
ufw status
开放端口:
ufw allow 80/tcp
六、快速检查汇总
常用命令总结:
| 目的 | 命令 |
|---|---|
| 查看被哪个程序占用 | lsof -i:80 |
| 查看监听端口 | `netstat -ntulp |
| 推荐查看端口监听(现代系统) | `ss -ntulp |
| 检查外网访问情况 | nmap -p 80 x.x.x.x |
| 查看 firewalld 状态 | firewall-cmd --list-ports |








