Linux下如何详细查看端口占用状态、开放情况及步骤?

在Linux系统中,查看端口状态是网络管理、服务调试和安全排查的核心操作,端口是应用程序与网络通信的入口,了解端口是否开放、监听状态及占用进程,能帮助快速定位服务异常、网络连接问题或潜在安全风险,本文将详细介绍Linux下查看端口的多种方法,涵盖命令行工具、系统文件及防火墙规则检查,适用于不同场景需求。

如何查看linux的port

使用netstat命令查看端口状态

netstat是传统的网络状态查看工具,功能全面,兼容性好,适用于几乎所有Linux发行版,它可显示TCP、UDP、UNIX域套接字等连接状态,以及端口监听、进程占用等信息。

常用参数及说明

参数 含义 示例
-t 显示TCP端口 netstat -t
-u 显示UDP端口 netstat -u
-l 只显示监听端口 netstat -l
-n 以数字形式显示地址和端口(不解析域名/服务名) netstat -n
-p 显示进程ID(PID)和进程名(需root权限) netstat -p
-a 显示所有连接(包括监听和未监听) netstat -a
-s 显示协议统计信息(如TCP、UDP包数量) netstat -s

示例命令

  • 查看所有监听的TCP和UDP端口(数字形式,显示进程):
    sudo netstat -tulpn  

    输出包含Proto(协议)、Local Address(本地地址:端口)、Foreign Address(远程地址:端口)、State(状态,如LISTEN)、PID/Program name(进程ID及名称)。

    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       
  • 查看TCP连接统计信息:
    netstat -s | grep TCP  

使用ss命令查看端口状态(推荐)

ssnetstat的替代工具,基于Netlink内核接口,查询速度更快,尤其在处理大量连接时性能优势明显,现代Linux发行版(如Ubuntu 18.04+、CentOS 7+)默认已安装ss

常用参数及说明

参数 含义 示例
-t 显示TCP端口 ss -t
-u 显示UDP端口 ss -u
-l 只显示监听端口 ss -l
-n 数字形式显示地址和端口 ss -n
-p 显示进程信息(需root权限) ss -p
-a 显示所有连接 ss -a
-s 显示协议统计摘要 ss -s
-4/-6 只显示IPv4/IPv6端口 ss -4

示例命令

  • 查看所有监听端口(含进程信息):
    sudo ss -tulpn  

    输出格式与netstat类似,但字段更简洁,

    State      Recv-Q Send-Q Local Address:Port   Peer Address:Port   Process    
    LISTEN     0      511       0.0.0.0:22          0.0.0.0:*        users:(("sshd",pid=1234,fd=3))  
    LISTEN     0      511          :::80             :::*        users:(("nginx",pid=5678,fd=4))  
  • 查看指定端口的监听状态:
    ss -tlnp | grep :8080  

使用lsof命令查看端口占用进程

lsof(list open files)可列出系统打开的文件、目录、网络连接等,通过-i参数可直接筛选网络端口信息,适合快速定位端口对应的进程。

常用参数及说明

参数 含义 示例
-i 显示网络连接相关文件 lsof -i
-i :端口号 显示指定端口的占用情况 lsof -i :80
-i [协议] 显示指定协议的连接(如TCP、UDP) lsof -i TCP
-P 不解析端口号为服务名(显示数字端口) lsof -P
-n 不解析主机名(显示IP地址) lsof -n

示例命令

  • 查看80端口被哪个进程占用:
    sudo lsof -i :80  

    输出包含COMMAND(进程名)、PID(进程ID)、USER(用户)、FD(文件描述符)、TYPE(类型,如IPv4)、DEVICE(设备)、SIZE/OFF(大小)、NODE(节点)、NAME(端口信息,如*:http168.1.1:80)。

    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
    nginx    5678 root    3u  IPv4   12345      0t0  TCP *:http (LISTEN)  
  • 查看所有TCP连接及对应进程:
    sudo lsof -i TCP  

使用nmap工具扫描端口

nmap(Network Mapper)是强大的网络扫描工具,可检测本地或远程主机的端口开放状态、服务类型及版本,适合安全审计和网络探测。

安装nmap

  • Ubuntu/Debian:sudo apt install nmap
  • CentOS/RHEL:sudo yum install nmap

常用参数及说明

参数 含义 示例
-sT TCP connect扫描(无需root,完整连接) nmap -sT localhost
-sU UDP扫描 nmap -sU -p 53,161 localhost
-p 指定端口范围(如1-100022,80,443 nmap -p 22,80,443 localhost
-O 启用系统检测 nmap -O localhost
-sV 检测服务版本 nmap -sV localhost
-open 只显示开放端口 nmap --open localhost

示例命令

  • 扫描本地主机的开放TCP端口(1-1024):
    nmap -sT -p 1-1024 localhost  

    输出显示端口状态(openclosedfiltered)及对应服务,

    如何查看linux的port

    PORT     STATE SERVICE  
    22/tcp   open  ssh  
    80/tcp   open  http  
    443/tcp  open  https  

查看/proc文件系统中的端口信息

/proc是Linux内核提供的虚拟文件系统,包含实时系统信息,通过读取/proc/net/tcp/proc/net/udp,可直接查看内核中的TCP/UDP端口状态,适用于无netstat/ss工具的 minimalist 环境。

示例操作

  • 查看TCP端口状态:

    cat /proc/net/tcp  

    输出字段说明:

    • local_address:本地地址和端口(十六进制,格式为IP:Port,IP为十六进制,端口为后两位十六进制,需转换为十进制)。
    • rem_address:远程地址和端口(格式同上)。
    • st:状态(01ESTABLISHED0ALISTEN等)。
      sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode   
      0: 0100007F:A001 00000000:0000 0A 00000000:00000000 00:00000000 00000000   1000        0 12345  

      其中0100007F是127.0.0.1(十六转十),A001是40961(0xA001=256×160+1),表示本地监听127.0.0.1:40961,状态为LISTEN0A)。

  • 查看UDP端口状态:

    cat /proc/net/udp  

检查防火墙规则中的端口

即使端口被进程监听,防火墙也可能阻止外部访问,需检查防火墙规则(如iptablesfirewalldufw),确认端口是否已开放。

iptables(传统防火墙)

# 查看所有规则(-L列出,-n数字显示,-v详细信息)  
sudo iptables -L -n -v  
# 查看INPUT链规则(入站规则)  
sudo iptables -L INPUT -n -v  
# 查看开放端口(ACCEPT规则)  
sudo iptables -L INPUT -n | grep ACCEPT  

firewalld(CentOS/RHEL默认防火墙)

# 查看已开放端口  
sudo firewall-cmd --list-ports  
# 查看所有规则(详细模式)  
sudo firewall-cmd --list-all  

ufw(Ubuntu默认防火墙)

# 查看防火墙状态  
sudo ufw status  
# 查看详细规则  
sudo ufw status verbose  

相关问答FAQs

问题1:如何快速查看某个端口是否被占用,以及占用它的进程ID和名称?

解答:使用ssnetstat命令结合grep筛选指定端口,或直接使用lsof

  • 方法1(推荐):

    如何查看linux的port

    sudo ss -tlnp | grep :端口号  

    例如查看8080端口:

    sudo ss -tlnp | grep :8080  

    输出如:LISTEN 0 511 *:8080 *:* users:(("java",pid=1234,fd=85)),显示进程名为java,PID为1234。

  • 方法2(兼容性好):

    sudo netstat -tlnp | grep :端口号  
  • 方法3(直接查进程):

    sudo lsof -i :端口号  

问题2:为什么端口显示为LISTEN状态,但外部设备无法访问?

解答:可能原因包括防火墙阻止、服务绑定地址错误、网络配置问题或SELinux限制。

  1. 防火墙规则:检查防火墙是否开放该端口,例如iptables中需确保INPUT链有ACCEPT规则允许目标端口;firewalld需执行sudo firewall-cmd --add-port=端口号/tcp --permanent并重载(sudo firewall-cmd --reload)。
  2. 绑定地址错误:服务可能只监听本地地址(如0.0.1),未绑定0.0.0(所有接口),通过ss -tulpn | grep :端口号查看Local Address,若为0.0.1:端口号,需修改服务配置(如Nginx的listen 0.0.0.0:端口号)。
  3. SELinux限制(CentOS/RHEL):若SELinux开启,可能阻止服务监听端口,检查策略:
    getsebool -a | grep httpd_can_network_connect  

    若为off,则启用:

    sudo setsebool -P httpd_can_network_connect on  
  4. 网络配置:检查服务器是否正确绑定公网IP,或安全组(云服务器)是否开放端口。

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

(0)
酷番叔酷番叔
上一篇 2025年9月19日 20:42
下一篇 2025年9月19日 21:00

相关推荐

  • Linux系统下如何手动添加静态路由表项的具体操作步骤?

    在Linux系统中,路由表是网络数据包转发的重要依据,它决定了数据包的传输路径,当需要让Linux服务器访问非直连网络或多网关环境时,手动添加路由是必要的操作,本文将详细介绍Linux下添加路由的方法,包括临时路由和永久路由的配置,以及不同发行版的差异,路由基础与临时路由添加Linux路由表记录了目标网络、下一……

    2025年9月23日
    10500
  • Linux系统如何修改环境变量PATH?

    在Linux系统中,PATH是一个重要的环境变量,它定义了系统在查找可执行文件时需要搜索的目录列表,当用户在终端输入一个命令(如ls、cd)时,系统会按照PATH变量中指定的目录顺序依次查找对应的可执行文件,如果找到则执行,否则提示“command not found”,合理配置PATH变量能够方便用户调用自定……

    2025年9月23日
    10800
  • Linux系统中R文件如何运行并获取其运行时间?

    在Linux环境下运行R语言脚本文件(通常以.R为扩展名)并测量其执行时间,是数据分析和科学计算中的常见需求,R脚本通常包含一系列R命令,用于数据处理、模型训练或可视化等任务,而运行时间测量则有助于评估代码效率、优化性能瓶颈,本文将详细介绍R脚本在Linux下的执行方法、时间测量技巧及相关注意事项,R脚本的编写……

    2025年9月9日
    8500
  • Linux服务器中招?终极查杀攻略在此

    检测异常进程与网络连接,分析可疑文件修改,使用rootkit查杀工具清除木马,隔离感染主机,及时更新补丁并加固系统安全配置。

    2025年7月28日
    12200
  • 如何查看Linux系统中运行的进程信息?

    在Linux系统中,进程是程序执行的基本单位,查看进程信息是系统管理和故障排查的核心操作,Linux提供了多种命令工具,帮助用户从不同维度获取进程详情,以下将详细介绍常用查看进程的方法及其实际应用,基础进程查看命令:psps(Process Status)是最常用的静态进程查看命令,用于快速获取当前进程的快照信……

    2025年9月24日
    8600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信