netstat -tuln
查看监听端口,ss -tuln
更高效,lsof -i :端口号
或lsof -i
可查端口占用进程,nmap localhost
扫描本机开放端口。在Linux系统中,查询端口号是管理网络服务、排查连接问题或安全审计的常见需求,以下是几种专业、可靠且高效的方法,适用于不同场景:
使用 ss
命令(推荐)
ss
(Socket Statistics)是替代 netstat
的现代工具,执行速度快且无需额外安装。
操作步骤:
-
查看所有监听端口:
ss -tuln
-t
:TCP 端口-u
:UDP 端口-l
:仅显示监听(LISTEN)状态-n
:以数字形式显示端口(不解析服务名)
-
过滤特定端口(如查询 80 端口):
ss -tuln sport = :80
输出示例:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
表示 22
端口(SSH)正在监听所有 IP。
使用 netstat
命令(传统方法)
若系统未预装 ss
,可使用 netstat
(需安装 net-tools
包):
sudo apt install net-tools # Debian/Ubuntu sudo yum install net-tools # CentOS/RHEL
常用命令:
netstat -tuln | grep LISTEN
参数含义与 ss
相同,但执行效率较低。
使用 lsof
命令(查看进程占用)
lsof
可显示端口关联的进程,适合定位冲突:
- 安装(如未预装):
sudo apt install lsof # Debian/Ubuntu sudo yum install lsof # CentOS/RHEL
- 查询端口占用(如 443 端口):
sudo lsof -i :443
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1234 root 6u IPv4 12345 0t0 TCP *:https (LISTEN)
显示
nginx
进程占用了 443 端口。
使用 nmap
扫描端口(远程/本地检测)
nmap
用于主动扫描开放端口,支持本地和远程主机:
- 安装:
sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL
- 扫描本机开放端口:
nmap -sT -p- localhost
-sT
:TCP 连接扫描-p-
:扫描所有端口(1-65535)
查看 /etc/services
文件(端口服务映射)
此文件记录了标准端口与服务名称的对应关系:
cat /etc/services | grep -w 80
输出示例:
http 80/tcp www # World Wide Web HTTP
仅作参考,实际端口以运行状态为准。
注意事项
- 权限要求:
lsof
和部分netstat
操作需sudo
权限才能查看所有进程。
- 参数差异:
- 不同 Linux 发行版(如 Ubuntu、CentOS)命令参数可能略有差异,建议查阅手册(
man ss
)。
- 不同 Linux 发行版(如 Ubuntu、CentOS)命令参数可能略有差异,建议查阅手册(
- 安全实践:
- 生产环境中慎用
nmap
扫描外部主机,可能触发防火墙警报。
- 生产环境中慎用
总结建议
- 首选
ss
:效率高、功能全,适合快速检查。 - 进程排查用
lsof
:精准定位端口占用程序。 - 远程检测用
nmap
:扫描开放端口。
引用说明参考 Linux 官方文档(man pages)、IBM DeveloperWorks 网络管理指南,以及 Red Hat 系统管理员手册,命令均通过 Ubuntu 22.04/CentOS 7 实测验证。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/30488.html