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

Linux 检查端口占用,如何查看具体进程?

在Linux系统中,检查端口状态是网络管理和系统运维中的常见操作,无论是验证服务是否正常监听、排查网络连接问题,还是确保安全策略生效,掌握端口检查方法都至关重要,本文将详细介绍Linux环境下检查端口的多种命令行工具及其使用场景,帮助读者高效完成端口状态监控与故障排查。

Linux 检查端口占用,如何查看具体进程?

使用netstat命令检查端口

netstat是传统的网络工具,能够显示网络连接、路由表、接口统计等信息,在大多数Linux发行版中默认安装,通过netstat可以全面查看TCP、UDP等协议的端口状态。

基本语法与常用选项

  • netstat -tuln:查看所有监听的TCP(t)和UDP(u)端口,并以数字形式显示地址和端口(n),避免DNS解析延迟。

    netstat -tuln

    输出结果中,Local Address列显示本地IP和端口,State列显示TCP连接状态(如LISTENESTABLISHED),Proto列指明协议类型。

  • netstat -tulnp:在上述基础上添加p选项,可显示占用端口的进程ID(PID)和名称,便于快速定位服务进程。

    netstat -tulnp | grep :80

    该命令可筛选出80端口的使用情况,若输出LISTEN状态,表明服务正在监听80端口。

  • netstat -an:显示所有(a)网络连接,包括监听和非监听状态,并以数字形式展示信息,适合排查特定连接问题。

使用ss命令检查端口

ssnetstat的替代工具,来自iproute2包,在CentOS 7+、Ubuntu 18.04+等现代系统中默认安装,相比netstatss的执行效率更高,尤其在处理大量网络连接时优势明显。

核心功能与参数

  • ss -tuln:基本语法与netstat类似,查看监听的TCP和UDP端口。

    ss -tuln

    输出结果包含State(状态)、Local Address:Port(本地地址端口)、Peer Address:Port(对端地址端口)等列,信息更直观。

  • ss -tulnp:显示监听端口的进程信息,与netstat -tulnp效果一致。

    ss -tulnp | grep :22

    可快速定位SSH服务(22端口)的监听状态及相关进程。

    Linux 检查端口占用,如何查看具体进程?

  • ss -t state established:筛选特定状态的连接,例如查看所有已建立的TCP连接。

    ss -t state established

    结合grep可进一步过滤特定端口的连接情况,如ss -t state established | grep :443

使用lsof命令检查端口

lsof(List Open Files)用于列出系统打开的文件,包括网络连接、设备文件等,通过lsof可以精准定位占用端口的进程,尤其适合排查端口被占用的问题。

常用操作

  • lsof -i :端口号:查看指定端口的占用情况。

    lsof -i :3306

    若端口被占用,输出会显示进程ID、命令名、用户、协议类型及本地/远程地址等信息。

  • lsof -i -P -n:显示所有网络连接,并以数字形式显示IP和端口(P禁用端口名解析,n禁用DNS解析)。

    lsof -i -P -n | grep LISTEN

    结合grep LISTEN可筛选出所有监听状态的端口及其进程。

  • lsof -i tcp:仅查看TCP协议的连接,lsof -i udp则查看UDP连接。

使用ncnetcat)测试端口连通性

nc是一个功能强大的网络工具,不仅能检查端口状态,还能进行端口扫描和简单数据传输,通过nc可以测试目标端口是否可达,适合快速验证服务是否对外响应。

基本用法

  • nc -zv IP地址 端口号:扫描目标IP的指定端口,z表示扫描模式(仅连接不传输数据),v显示详细信息。

    nc -zv 192.168.1.100 80

    若端口开放,输出会显示Connection to 192.168.1.100 80 port [tcp/http] succeeded!;若被防火墙拦截或端口未开放,则会显示连接失败。

    Linux 检查端口占用,如何查看具体进程?

  • nc -zv IP地址 端口范围:扫描连续端口,例如扫描1-1024端口。

    nc -zv 192.168.1.100 1-1024

    适用于快速发现目标主机上的常见服务端口。

使用telnet测试端口连通性

telnet是一种传统的远程登录工具,也可用于测试端口连通性,虽然其功能较nc简单,但在无nc工具的环境中仍可使用。

操作步骤

  • telnet IP地址 端口号:尝试连接目标端口。

    telnet 192.168.1.100 80

    若连接成功,会显示黑屏并进入交互界面(部分系统可能显示Connected to 192.168.1.100);若失败,则会提示Connection refusedConnection timed out

  • 注意:telnet默认使用明文传输,存在安全风险,建议仅在临时测试时使用。

结合firewalldiptables检查防火墙规则

在Linux中,防火墙可能阻止端口访问,因此检查防火墙规则是端口排查的重要环节。

firewalld(CentOS/RHEL 7+)

  • firewall-cmd --list-ports:查看已开放的端口。
    firewall-cmd --list-ports
  • firewall-cmd --query-port=端口号/协议:检查指定端口是否开放。
    firewall-cmd --query-port=8080/tcp

iptables(传统防火墙)

  • iptables -L -n --line-numbers:列出所有规则,-n避免DNS解析,--line-numbers显示规则序号。
    iptables -L INPUT -n --line-numbers
  • 重点查看ACCEPT目标且涉及目标端口(--dport)的规则,确认端口是否被允许访问。

综合排查步骤

当遇到端口无法访问问题时,建议按以下步骤排查:

  1. 检查本地监听状态:使用ss -tulnpnetstat -tulnp确认服务是否在本地正确监听目标端口。
  2. 验证进程状态:若端口未监听,检查对应服务进程是否运行(如systemctl status nginx)。
  3. 测试本地连通性:使用nc -zv 127.0.0.1 端口telnet 127.0.0.1 端口确认本地访问是否正常。
  4. 检查防火墙规则:通过firewall-cmdiptables确认端口是否被防火墙拦截。
  5. 测试远程连通性:从其他主机使用nc -zv 目标IP 端口验证网络可达性,排查网络路由或ACL限制。

通过以上工具和方法,可以全面掌握Linux系统中端口状态的检查技巧,无论是日常运维还是故障排查,都能高效定位问题并解决,熟练运用这些命令,将极大提升网络服务管理的效率和准确性。

赞(0)
未经允许不得转载:好主机测评网 » Linux 检查端口占用,如何查看具体进程?