上一篇
Linux如何快速查看端口占用?
- Linux
- 2025-06-12
- 3002
查看Linux端口常用命令: ,1.
netstat -tunlp
显示TCP/UDP监听端口及对应进程 ,2.
ss -tunlp
更快速的替代方案,用法类似netstat ,3.
lsof -i :端口号
精确查看指定端口占用进程 ,需root权限查看所有进程信息。
使用 netstat
命令(经典工具)
netstat
是传统网络工具,可查看监听端口和活动连接:
# 查看所有监听端口(TCP/UDP) sudo netstat -tuln # 查看所有活动连接(含进程名) sudo netstat -tulnp
参数解析:
-t
:TCP端口-u
:UDP端口-l
:仅显示监听端口-n
:以数字形式显示(不解析域名)-p
:显示关联进程名(需sudo权限)
输出示例:
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
适用场景:快速检查服务监听状态(如SSH默认端口22)。
使用 ss
命令(推荐替代方案)
ss
(Socket Statistics)是netstat
的现代替代品,速度更快:
# 查看所有监听端口 sudo ss -tuln # 查看特定端口(如80)占用情况 sudo ss -tuln sport = :80
优势:
- 更低的系统资源消耗
- 支持过滤语法(如
sport = :443
过滤443端口)
使用 lsof
命令(查看进程级占用)
通过进程视角检查端口使用:
# 查看所有进程占用的网络端口 sudo lsof -i -P -n # 检查特定端口(如3306)的进程 sudo lsof -i :3306
输出关键列:
COMMAND
:进程名称PID
:进程IDTYPE
:协议类型(TCP/UDP)NODE
:端口号
使用 nmap
扫描本地端口(安全检测)
通过扫描工具检查开放端口:
# 安装nmap(如未安装) sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL # 扫描本机所有端口 sudo nmap -sT -p- 127.0.0.1
参数说明:
-sT
:TCP连接扫描-p-
:扫描1-65535全部端口0.0.1
:目标IP(本机)
️ 注意:避免未经授权扫描他人服务器,可能触发安全警报。
查看 /etc/services
文件(端口与协议映射)
获取标准端口号对应的服务名称:
cat /etc/services | grep -w 80
输出示例:
http 80/tcp www # World Wide Web HTTP
此文件定义了IANA分配的端口标准,但实际服务可能使用非标准端口。
关键注意事项
- 权限问题:
- 查看进程关联端口需
sudo
权限(如netstat -p
或lsof
)。
- 查看进程关联端口需
- 端口状态解析:
LISTEN
:服务正在监听ESTABLISHED
:活动连接TIME_WAIT
:连接关闭中
- 防火墙影响:
- 端口开放但无法访问?检查防火墙:
sudo ufw status # Ubuntu防火墙 sudo firewall-cmd --list-ports # CentOS防火墙
- 端口开放但无法访问?检查防火墙:
总结建议
- 日常运维:优先使用
ss -tuln
(高效)或netstat -tuln
(兼容性好)。 - 进程排查:用
lsof -i :端口号
定位占用进程。 - 安全审计:通过
nmap
验证端口暴露情况。
定期检查端口可有效预防未经授权的服务运行,提升系统安全性,建议结合自动化工具(如 fail2ban
)加强防护。
引用说明 参考 Linux 官方文档(man pages)及以下资源:
netstat
,ss
,lsof
,nmap
的 Linux man 手册(终端输入man 命令名
查看)- IANA 端口分配标准(https://www.iana.org/assignments/service-names-port-numbers)
- Linux 网络管理权威指南《The Linux Documentation Project》