当前位置:首页 > Linux > 正文

Linux端口号怎么查

使用 netstat -tuln查看监听端口, ss -tuln更高效, lsof -i :端口号lsof -i可查端口占用进程, nmap localhost扫描本机开放端口。

在Linux系统中,查询端口号是管理网络服务、排查连接问题或安全审计的常见需求,以下是几种专业、可靠且高效的方法,适用于不同场景:


使用 ss 命令(推荐)

ss(Socket Statistics)是替代 netstat 的现代工具,执行速度快且无需额外安装。
操作步骤:

  1. 查看所有监听端口

    ss -tuln
    • -t:TCP 端口
    • -u:UDP 端口
    • -l:仅显示监听(LISTEN)状态
    • -n:以数字形式显示端口(不解析服务名)
  2. 过滤特定端口(如查询 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。

Linux端口号怎么查  第1张


使用 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 可显示端口关联的进程,适合定位冲突:

  1. 安装(如未预装):
    sudo apt install lsof  # Debian/Ubuntu
    sudo yum install lsof  # CentOS/RHEL
  2. 查询端口占用(如 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 用于主动扫描开放端口,支持本地和远程主机:

  1. 安装
    sudo apt install nmap  # Debian/Ubuntu
    sudo yum install nmap  # CentOS/RHEL
  2. 扫描本机开放端口
    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

仅作参考,实际端口以运行状态为准。


注意事项

  1. 权限要求
    • lsof 和部分 netstat 操作需 sudo 权限才能查看所有进程。
  2. 参数差异
    • 不同 Linux 发行版(如 Ubuntu、CentOS)命令参数可能略有差异,建议查阅手册(man ss)。
  3. 安全实践
    • 生产环境中慎用 nmap 扫描外部主机,可能触发防火墙警报。

总结建议

  • 首选 ss:效率高、功能全,适合快速检查。
  • 进程排查用 lsof:精准定位端口占用程序。
  • 远程检测用 nmap:扫描开放端口。

引用说明参考 Linux 官方文档(man pages)、IBM DeveloperWorks 网络管理指南,以及 Red Hat 系统管理员手册,命令均通过 Ubuntu 22.04/CentOS 7 实测验证。

0