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

相关推荐

  • 如何正确挂载NFS共享?

    在Linux系统中挂载(mount)共享存储是常见的操作,主要用于访问网络文件系统(如NFS、Samba/CIFS),以下是详细步骤和注意事项:挂载前的准备工作安装必要工具NFS共享: sudo apt install nfs-common # Debian/Ubuntusudo yum install nfs……

    2025年7月7日
    7100
  • Linux如何创建sh文件?打开sh文件的方法是什么?

    在Linux系统中,sh文件(Shell脚本文件)是通过命令行解释器(如Bash)执行的文本脚本,常用于自动化任务、系统管理等操作,创建和打开sh文件是Linux日常运维和开发的基础技能,下面详细介绍具体操作方法,创建sh文件的方法创建sh文件的核心是生成一个包含可执行命令的文本文件,并确保其扩展名为.sh,以……

    2025年9月19日
    2300
  • Linux如何按时间删除指定文件?

    在Linux系统中,管理文件时经常需要根据文件的时间属性进行筛选和删除,例如清理过期的日志文件、临时文件或备份文件,文件的时间属性主要包括修改时间(mtime)、访问时间(atime)和状态改变时间(ctime),理解这些时间的含义并掌握通过时间条件删除文件的方法,是Linux系统管理的重要技能,Linux文件……

    2025年8月30日
    3200
  • Linux如何安装到U盘?详细操作步骤与方法是什么?

    将Linux系统安装到U盘是实现便携式操作系统、随身工作环境或测试系统的常见需求,通过U盘启动并运行Linux,既能保留原系统不受影响,又能随时随地使用熟悉的操作环境,以下是详细的安装步骤和注意事项,涵盖从准备到配置的全流程,安装前的准备工作在开始安装前,需确保硬件和软件准备就绪,避免中途出现兼容性问题或数据丢……

    2025年10月6日
    1600
  • Linux环境下安装JDK成功需掌握哪些关键步骤和注意事项?

    在Linux系统中成功安装JDK(Java Development Kit)是进行Java开发的基础,但由于Linux发行版多样(如Ubuntu、CentOS等)和安装方式的不同(手动解压、包管理器、SDKMAN等),用户可能会遇到环境变量配置、版本冲突等问题,本文将详细讲解Linux环境下JDK安装的完整流程……

    2025年9月19日
    2600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信