服务器测评网
我们一直在努力

linux查看系统端口

在Linux系统中,端口是网络通信的入口与出口,每个端口对应一种服务或进程,查看系统端口状态对于系统管理、服务监控、安全排查等场景至关重要,本文将详细介绍Linux查看系统端口的多种方法、工具及实用技巧,帮助读者全面掌握端口管理技能。

linux查看系统端口

端口基础:理解Linux端口的核心概念

在深入学习查看端口的方法前,需先明确端口的基本概念,Linux系统中,端口分为TCP(传输控制协议)和UDP(用户数据报协议)两种类型,分别通过不同的端口号标识服务,端口号范围从0到65535,其中0-1023为知名端口(如HTTP服务的80端口、SSH服务的22端口),需root权限才能使用;1024-49151为注册端口,用户可自定义使用;49152-65535为动态或私有端口,通常用于临时连接。

端口状态是排查问题的关键,常见状态包括:

  • LISTEN:端口处于监听状态,等待连接请求(如运行中的Web服务);
  • ESTABLISHED:端口已建立连接,正在进行数据传输;
  • TIME_WAIT:连接已关闭,但等待足够时间确保数据传输完成(常见于TCP连接断开后);
  • CLOSED:端口未开放,无连接活动。

理解这些状态后,才能更精准地通过端口信息判断服务运行情况。

基础查看命令:netstat与ss的经典用法

Linux查看端口最常用的工具是netstatss,两者均能显示端口状态、关联进程等信息,但ss因性能更优逐渐成为主流。

netstat:传统端口查看工具

netstat是早期Linux系统标配的工具,通过参数组合可灵活查看端口信息。

  • 查看所有监听端口

    netstat -tuln

    参数说明:-t显示TCP端口,-u显示UDP端口,-l仅显示监听端口,-n以数字形式显示地址和端口(避免DNS解析,提升速度),输出结果包括协议、本地地址(IP:端口)、状态等信息,例如tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN表示SSH服务在所有IP的22端口监听。

  • 查看端口关联进程

    netstat -tulpn

    添加-p参数可显示进程ID(PID)和进程名,例如tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master,表明80端口被nginx进程(PID=1234)占用。

  • 查看所有端口(包括非监听)

    netstat -an

    -a显示所有端口,可观察到ESTABLISHED等连接状态,适合排查网络连接问题。

ss:新一代高性能端口查看工具

ss是iproute2工具包的一部分,相比netstat,它直接从内核获取网络信息,速度更快,尤其在处理大量连接时优势明显。

  • 查看监听端口

    ss -tuln

    参数与netstat一致,输出格式更简洁,例如LISTEN 0 5 *:22 *:*表示22端口监听,等待队列最大5个连接。

  • 查看进程与端口关联

    ss -tulpn

    输出结果包含PID和进程名,例如LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6)),更清晰地展示进程与端口的对应关系。

  • 过滤特定端口

    ss -tulpn | grep ":80"

    通过grep过滤出80端口相关信息,适合快速定位特定端口状态。

    linux查看系统端口

进阶查看技巧:结合grep、awk等工具过滤信息

实际运维中,往往需要从大量端口信息中提取关键数据,此时可结合文本处理工具实现高效过滤。

按端口号过滤

若需查看特定端口(如8080)是否被占用:

ss -tulpn | grep ":8080"

若输出为空,表示端口未被占用;若有结果,则显示占用进程的PID和名称。

按进程名过滤

若需查看某进程(如nginx)占用的所有端口:

ss -tulpn | grep nginx

可快速定位nginx服务的监听端口及连接状态。

提取端口号列表

若需获取系统所有监听的端口号(去重):

ss -tuln | awk '{print $4}' | cut -d: -f2 | sort -u

命令解析:awk提取第四列(本地地址:端口),cut -d:以冒号为分隔符提取端口部分,sort -u去重排序。

统计端口数量

若需统计当前监听的TCP端口数量:

ss -tln | wc -l

wc -l统计行数,即监听端口数量(包含标题行,可减1得到实际值)。

实时监控端口动态:lsof与watch命令的应用

端口状态是动态变化的,实时监控对于排查瞬时问题(如端口占用冲突、连接数激增)至关重要。

lsof:列出打开文件的端口信息

lsof(list open files)可查看端口被哪些进程打开,支持更精细的过滤:

  • 查看指定端口的占用情况

    lsof -i :80

    输出包括进程名、PID、用户、协议、本地地址等信息,例如nginx 1234 root 6u IPv4 12345 0t0 TCP *:80 (LISTEN)

  • 查看某用户的端口占用

    lsof -u username -i

    可排查特定用户启动的服务端口占用情况。

watch:实时刷新端口状态

watch命令可周期性执行命令并显示结果,适合动态监控端口变化:

  • 每秒刷新监听端口数量

    watch -n 1 "ss -tln | wc -l"

    -n 1表示每秒刷新一次,可直观观察端口数量变化。

    linux查看系统端口

  • 实时监控ESTABLISHED连接数

    watch -n 1 "ss -an | grep ESTABLISHED | wc -l"

    适合排查网络连接异常(如连接数突增可能遭受攻击)。

不同场景下的端口查看实践

排查服务是否正常启动

若怀疑某服务(如MySQL)未启动,可查看其默认端口(3306)是否监听:

ss -tulpn | grep ":3306"

若有输出,说明服务已启动并监听端口;若无,需检查服务日志或手动启动服务。

发现异常连接

若系统出现卡顿,可能是异常进程占用端口或建立大量连接,可通过以下命令排查:

ss -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

命令解析:统计ESTABLISHED连接的远程IP地址及连接数,按连接数降序排列,可快速定位异常IP(如连接数过高可能是攻击)。

解决端口占用冲突

若启动服务时提示“端口已被占用”,需先找到占用进程并终止:

  1. 查找占用端口的进程:
    ss -tulpn | grep ":端口号"
  2. 终止进程(谨慎操作,避免影响服务):
    kill -9 进程ID
  3. 修改服务配置,更换端口后重启服务。

监控网络流量与端口关联

结合iftopnethogs工具,可查看端口对应的流量情况:

iftop -i 网卡名 -P

-P按端口显示流量,可定位流量异常的端口,排查恶意程序或带宽占用问题。

常见问题与解决方案

端口显示“LISTEN”但无法访问

可能原因:

  • 防火墙拦截(如iptables、firewalld);
  • 服务未绑定到所有IP(仅监听127.0.0.1)。
    解决方法:
  1. 检查防火墙规则:
    iptables -L -n  # 查看iptables规则
    firewall-cmd --list-ports  # 查看firewalld开放端口
  2. 修改服务配置,确保监听地址为0.0.0(所有IP)。

查看端口提示“Permission denied”

普通用户无法查看所有端口信息(尤其是知名端口),需使用root权限执行命令:

sudo ss -tulpn

端口状态为“TIME_WAIT”过多

TIME_WAIT状态是TCP连接正常关闭后的等待状态,若数量过多可能影响性能,可通过调整内核参数优化(需谨慎操作):

echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
sysctl -p

启用tcp_tw_reuse允许TIME_WAIT状态的端口复用,减少端口占用。

如何查看IPv6端口信息

添加-6参数即可查看IPv6端口:

ss -6tulpn

Linux查看系统端口是系统运维的基础技能,通过netstatsslsof等工具,结合grepawk等文本处理命令,可灵活满足不同场景的需求,从基础的状态查看,到进阶的过滤分析,再到实时的动态监控,掌握这些方法能帮助快速定位服务问题、排查网络异常、保障系统安全,实际操作中,需根据系统版本(如CentOS 7+默认推荐使用ss)和需求选择合适的工具,并注意权限管理和安全防护,确保端口信息的准确性和系统的稳定性。

赞(0)
未经允许不得转载:好主机测评网 » linux查看系统端口