Linux如何查看当前系统中所有监听的端口号及其对应进程信息?

Linux系统中,端口号是网络通信中的重要标识,每个监听端口号都对应一个等待客户端连接的服务或进程,了解如何查看和管理监听端口号,对于系统运维、服务调试和安全排查都至关重要,本文将详细介绍Linux系统中监听端口的查看方法、相关工具的使用、进程关联分析以及防火墙对端口监听的影响,并辅以实例说明和工具对比,帮助读者全面掌握Linux端口监听的管理技巧。

linux如何监听的端口号

端口与监听状态的基础概念

在TCP/IP协议中,端口号是一个16位的无符号整数,取值范围0-65535,用于区分同一台主机上的不同网络服务,0-1023为知名端口(Well-Known Ports),通常被系统服务占用(如HTTP服务的80端口、HTTPS的443端口),需要root权限才能监听;1024-49151为注册端口(Registered Ports),用户程序可自由使用;49152-65535为动态或私有端口(Dynamic/Private Ports),通常用于临时连接。

当某个进程在特定端口上“监听”(Listen)时,意味着该端口处于打开状态,等待客户端发起连接请求,在Linux中,监听状态的端口通常显示为LISTEN,可通过工具查看其对应的协议(TCP/UDP)、IP地址、进程ID(PID)及进程名称等信息。

查看监听端口的常用命令

Linux提供了多种命令用于查看监听端口,不同工具在功能、效率和输出格式上各有特点,以下是常用工具的详细说明:

netstat:传统网络状态工具

netstat是Linux中经典的网络工具,用于显示网络连接、路由表、接口统计等信息,查看监听端口时,常用参数组合为-tulnp

  • -t:显示TCP端口;
  • -u:显示UDP端口;
  • -l:仅显示监听状态的端口;
  • -n:以数字形式显示地址和端口,不解析域名和服务名(提高速度);
  • -p:显示进程ID(PID)和进程名称(需root权限才能显示其他用户的进程)。

示例

netstat -tulnp

输出结果类似如下:

Active Internet connections (only servers)
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
tcp6       0      0 :::80                   :::*                    LISTEN      5678/nginx
udp        0      0 0.0.0.0:68              0.0.0.0:*                           9012/dhclient
  • Proto:协议(TCP/UDP);
  • Local Address:本地IP地址和端口,0.0.0表示监听所有IPv4地址,表示监听所有IPv6地址;
  • State:端口状态,LISTEN表示监听中;
  • PID/Program name:进程ID和进程名。

ss:高效替代工具

ssiproute2包中的工具,旨在替代netstat,其查询效率更高(直接从内核获取网络信息),输出格式更简洁,常用参数与netstat类似:

  • -t:TCP端口;
  • -u:UDP端口;
  • -l:监听端口;
  • -n:数字形式;
  • -p:显示进程信息。

示例

ss -tulnp

输出示例:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     0      511          0.0.0.0:22                    0.0.0.0:*
LISTEN     0      128               [::]:80                   [::]:*
LISTEN     0      0         127.0.0.1:631                     [::]:*

相比netstatss在处理大量连接时速度更快,且支持更多过滤条件(如-4仅显示IPv4,-6仅显示IPv6)。

lsof:列出打开文件的工具

lsof(List Open Files)用于列出系统中被进程打开的文件,包括网络端口(在Linux中,端口被视为一种“文件”),查看监听端口时,使用-i参数指定网络地址:

linux如何监听的端口号

  • -i:显示网络文件(端口);
  • -P:不解析端口号为服务名;
  • -n:不解析IP地址为域名;
  • -s:显示端口状态(如TCP:LISTEN)。

示例
查看80端口监听情况:

lsof -i:80 -P -n

输出示例:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx     5678  root    6u  IPv6   12345      0t0  TCP *:http (LISTEN)
nginx     5679 www-data 6u  IPv6   12345      0t0  TCP *:http (LISTEN)

lsof的优势在于可精准定位特定端口的进程,尤其适合排查端口冲突问题。

监听端口的进程关联与管理

通过上述工具获取PID后,可进一步分析进程信息,或对监听端口进行管理操作。

查看进程详情

使用ps/proc文件系统查看进程详细信息:

# 通过PID查看进程
ps -ef | grep 5678
# 或查看/proc目录下的进程信息
cat /proc/5678/cmdline  # 查看进程启动命令
cat /proc/5679/environ  # 查看进程环境变量

终止或管理进程

若需终止占用端口的进程(如服务异常),可使用killpkill

# 正常终止进程(推荐)
kill 5678
# 强制终止进程(谨慎使用)
kill -9 5678
# 根据进程名终止
pkill nginx

修改服务监听端口

若需调整服务的监听端口(如避免冲突),需修改对应服务的配置文件,

  • Nginx:修改/etc/nginx/nginx.conf中的listen指令,如listen 8080;,然后执行nginx -s reload重载配置;
  • Apache:修改/etc/httpd/conf/httpd.conf中的Listen指令,如Listen 8080,然后执行systemctl restart httpd重启服务;
  • MySQL:修改/etc/my.cnf中的port = 3306,如改为port = 3307,然后重启MySQL服务。

防火墙与端口监听的关系

Linux防火墙(如iptablesfirewalldnftables)通过规则控制端口的访问权限,即使端口处于监听状态,若防火墙未放行,外部客户端仍无法连接,排查端口访问问题时,需同时检查防火墙规则。

iptables规则检查(传统防火墙)

# 查看INPUT链规则(控制入站流量)
iptables -L INPUT -n --line-numbers
# 放行80端口TCP流量
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

firewalld规则检查(CentOS/RHEL默认防火墙)

# 查看已开放的端口
firewall-cmd --list-ports
# 添加80端口到永久规则
firewall-cmd --permanent --add-port=80/tcp
# 重新加载防火墙使规则生效
firewall-cmd --reload

常用端口查看工具对比

为方便选择工具,以下表格对比netstatsslsof的特点:

工具 优点 缺点 适用场景
netstat 兼容性好,支持系统广泛 查询速度慢,已逐渐被ss替代 旧系统或简单端口查看
ss 查询效率高,输出简洁,支持过滤条件多 iproute2支持,部分旧系统无此工具 现代Linux系统,大规模连接监控
lsof 精准定位端口进程,支持文件类型过滤 输出信息较多,需结合过滤参数使用 端口冲突排查、特定端口进程分析

相关问答FAQs

问题1:为什么使用ssnetstat查看端口更快?

解答
netstat通过读取/proc/net/tcp/proc/net/udp等文件获取网络信息,这些文件需要解析内核数据结构,且在连接数较多时遍历效率较低;而ss直接从内核的netlink套接字获取实时网络状态数据,避免了文件I/O和解析开销,因此在处理大量连接时速度显著快于netstatss支持更精细的过滤条件(如按状态、协议、端口范围过滤),适合复杂场景的端口监控。

问题2:如何确认某个服务是否正确监听指定端口?

解答
可通过以下步骤确认服务是否正确监听指定端口:

linux如何监听的端口号

  1. 检查端口监听状态:使用ss -tulpn | grep 端口号netstat -tulpn | grep 端口号,确认端口处于LISTEN状态,并显示对应的服务进程,检查Nginx是否监听80端口:

    ss -tulpn | grep :80

    若输出中包含nginx进程且StateLISTEN,则说明监听正常。

  2. 检查服务配置文件:查看服务的配置文件(如Nginx的nginx.conf、Apache的httpd.conf),确认listen指令或Listen指令配置的端口号与预期一致。

    grep "listen" /etc/nginx/nginx.conf
  3. 检查防火墙规则:确保防火墙放行了目标端口,以firewalld为例,执行:

    firewall-cmd --list-ports | grep 80/tcp

    若未显示,需添加规则并重载防火墙。

  4. 测试端口连通性:使用telnetnc工具从本地或远程客户端测试端口是否可访问:

    telnet 127.0.0.1 80
    # 或
    nc -zv 127.0.0.1 80

    若显示“Connected to…”,则说明端口监听及防火墙配置正常。

通过以上步骤,可全面确认服务的端口监听状态,排查因配置错误、进程异常或防火墙限制导致的问题。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/34544.html

(0)
酷番叔酷番叔
上一篇 2025年10月2日 16:40
下一篇 2025年10月2日 17:04

相关推荐

  • Linux中如何删除服务器文件夹?

    在Linux服务器管理中,删除文件夹是常见操作,但需谨慎处理,避免误删重要数据,本文将详细介绍Linux中删除文件夹的多种方法、常用选项及安全注意事项,帮助用户高效且安全地完成操作,基础删除命令与选项Linux中删除文件夹主要依赖rm和rmdir命令,二者功能有所区别,需根据场景选择:rmdir命令:仅删除空目……

    2025年10月1日
    3400
  • 如何安装armlinux gcc?详细步骤与操作指南

    交叉编译器是在一种架构(如x86_64)的宿主机上生成另一种架构(如ARM)目标程序的工具链,开发ARM Linux应用时,安装armlinux gcc是基础步骤,以下是详细安装流程,涵盖不同Linux发行版、架构选择及环境配置,安装前准备确认目标ARM架构:根据开发板或芯片的ARM版本选择对应编译器,常见架构……

    2025年9月25日
    4700
  • Linux中如何查找指定文件夹的命令?

    在Linux系统中,查找文件夹是日常管理和运维中的常见需求,掌握多种查找方法能高效定位目标目录,本文将详细介绍Linux中查找文件夹的常用命令及其使用场景,帮助用户根据实际需求选择合适的方式,使用find命令:最强大的文件查找工具find命令是Linux中功能最全面的查找工具,支持按名称、类型、大小、修改时间等……

    2025年10月7日
    3300
  • 在Linux系统中,如何正确重启网卡设备以恢复网络连接?

    重启Linux网卡是解决网络连接异常、应用配置更新或服务故障的常见操作,不同Linux发行版和场景下操作方式略有差异,以下是详细操作步骤及注意事项,传统方法:使用ifdown/ifup命令这是最基础的网卡重启方式,适用于大多数Linux发行版(如CentOS 6/7、RHEL、Debian等),通过先关闭再启动……

    2025年9月17日
    5600
  • 如何查询Linux系统是否已设置为UTF-8编码?

    在Linux系统中,UTF-8是一种广泛使用的字符编码,能够兼容全球大多数语言的字符,确保多语言环境下的正常显示和处理,查询系统是否支持UTF-8编码,通常需要从环境变量、系统locale配置、文件系统编码及终端编码等多个维度进行验证,以下是具体操作方法和步骤,通过环境变量检查当前编码设置Linux系统的语言和……

    2025年10月8日
    3300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信