如何查看服务端口命令?

在Linux和Unix-like系统中,查看服务端口是网络管理和系统运维中的常见操作,通过命令行工具可以快速定位服务监听的端口、端口关联的进程以及网络连接状态等信息,以下是常用的查看服务端口的命令及其详细使用方法,涵盖不同场景下的需求。

查看服务端口命令
(图片来源网络,侵删)

使用netstat命令查看端口信息

netstat是一个传统的网络工具,用于显示网络连接、路由表、接口统计等信息,尽管在现代系统中逐渐被ss命令替代,但netstat仍广泛使用,尤其在旧版系统中。

基本语法

netstat [选项] [参数]

常用选项及示例

  • 查看所有监听端口

    netstat -tuln
    • -t:显示TCP端口
    • -u:显示UDP端口
    • -l:仅显示监听状态的端口
    • -n:以数字形式显示地址和端口,避免域名解析,提高速度

    示例输出:

    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
    tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN     
    udp        0      0 0.0.0.0:68              0.0.0.0:*                          
  • 查看端口关联的进程ID(PID)

    查看服务端口命令
    (图片来源网络,侵删)
    netstat -tulnp
    • -p:显示进程ID和进程名称

    示例输出:

    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          
    tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5678/mysqld        
  • 查看所有网络连接(包括监听和非监听)

    netstat -an
    • -a:显示所有连接,包括监听和非监听
  • 查看指定端口的连接状态

    netstat -tuln | grep 80

netstat命令的局限性

  • 在高并发系统中,netstat的输出速度较慢,因为需要遍历所有网络堆栈。
  • 在新版本的Linux发行版中(如CentOS 7+、Ubuntu 18.04+),netstat可能被ss替代。

使用ss命令查看端口信息

ssiproute2包的一部分,旨在替代netstat,提供更快速、更详细的网络连接信息。ss命令通过直接读取netlink套接字获取数据,效率远高于netstat

查看服务端口命令
(图片来源网络,侵删)

基本语法

ss [选项] [参数]

常用选项及示例

  • 查看所有监听端口

    ss -tuln
    • -t:TCP端口
    • -u:UDP端口
    • -l:仅显示监听端口
    • -n:数字形式显示

    示例输出:

    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128          0.0.0.0:22                     0.0.0.0:*                  
    LISTEN     0      128             [::]:22                    [::]:*                  
    LISTEN     0      80         127.0.0.1:3306                    0.0.0.0:*                  
  • 查看端口关联的进程信息

    ss -tulnp
    • -p:显示进程ID和名称

    示例输出:

    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port    Process    
    LISTEN     0      128          0.0.0.0:22                     0.0.0.0:*        users:(("sshd",pid=1234,fd=3))  
    LISTEN     0      80         127.0.0.1:3306                    0.0.0.0:*        users:(("mysqld",pid=5678,fd=31))  
  • 查看所有TCP连接

    ss -t
  • 查看所有UDP连接

    ss -u
  • 查看指定端口的连接

    ss -tuln | grep 8080

ss命令的优势

  • 速度快,尤其在高并发场景下。
  • 支持更多过滤条件,如按状态、协议、端口范围等。
  • 输出格式更清晰,便于解析。

使用lsof命令查看端口信息

lsof(List Open Files)是一个列出系统打开文件的工具,在Linux中,一切皆文件,因此网络端口也被视为文件,通过lsof可以查看端口被哪个进程占用。

基本语法

lsof [选项] [参数]

常用选项及示例

  • 查看指定端口占用的进程

    lsof -i :80
    • -i:显示指定协议的端口,80表示TCP/UDP的80端口

    示例输出:

    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx     1234  root    6u  IPv4   12345      0t0  TCP *:http (LISTEN)
    nginx     1235  www-data 7u  IPv4   12346      0t0  TCP *:http (LISTEN)
  • 查看所有监听端口

    lsof -i -P -n | grep LISTEN
    • -P:不解析端口号为服务名
    • -n:不解析IP地址为域名
  • 查看指定进程的端口占用

    lsof -p 1234

lsof的适用场景

  • 适用于需要查看端口与进程详细对应关系的场景。
  • 支持按文件描述符、用户、进程等条件过滤。

使用grep结合其他命令过滤端口信息

在实际操作中,经常需要结合grep命令过滤端口信息,

netstat -tuln | grep 3306
ss -tuln | grep 8080
lsof -i :22 | grep LISTEN

不同命令的对比

以下表格总结了三个常用查看端口命令的特点:

命令优点缺点适用场景
netstat兼容性好,支持旧版系统速度慢,功能相对有限旧版Linux系统或简单查询
ss速度快,功能丰富,推荐使用部分旧系统可能未安装新版Linux系统(CentOS 7+等)
lsof支持按进程、文件描述符过滤输出信息较多,需要结合grep需要详细端口-进程映射关系

相关问答FAQs

Q1: 如何查看某个端口是否被占用?
A1: 可以使用以下命令组合检查端口占用情况:

  • 使用ss命令:ss -tuln | grep 端口号,若输出结果中包含该端口,则表示已被占用。
  • 使用netstat命令:netstat -tuln | grep 端口号
  • 使用lsof命令:lsof -i :端口号,若显示进程信息则表示端口被占用。

Q2: 如何查看所有TCP连接状态及对应的数量?
A2: 可以通过以下命令统计TCP连接状态:

ss -tan | awk 'NR>1 {print $1}' | sort | uniq -c

该命令会输出各TCP状态(如ESTABLISTENTIME_WAIT等)及其对应的连接数量。

10  ESTAB
5   LISTEN
20  TIME_WAIT

ESTAB表示已建立的连接,LISTEN表示监听状态,TIME_WAIT表示等待关闭的连接。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/456703.html<

(0)
运维的头像运维
上一篇2025-11-09 19:56
下一篇 2025-11-09 20:01

相关推荐

  • cmd at命令实例有哪些具体用法?

    在Windows操作系统中,命令提示符(CMD)是一个强大的工具,它允许用户通过文本命令与系统进行交互,at命令是一个计划任务工具,用于在指定的时间运行命令或程序,尽管在较新的Windows版本中(如Windows 8和Windows 10),at命令已被schtasks命令取代,但了解at命令的实例和用法仍然……

    2025-11-20
    0
  • bat如何启动服务?命令格式是怎样的?

    在Windows操作系统中,BAT脚本(批处理文件)是一种强大的工具,可以通过简单的命令实现自动化操作,其中启动服务是常见的应用场景,服务是Windows中在后台运行的应用程序,通常没有用户界面,用于提供系统功能或支持其他应用程序,通过BAT脚本启动服务,可以简化手动操作,提高管理效率,以下是关于使用BAT脚本……

    2025-11-20
    0
  • cmd命令如何获取当前时间戳?

    在Windows操作系统中,cmd命令是用户与系统交互的重要工具,而时间戳则是记录和追踪事件发生时间的关键数据,结合cmd命令与时间戳,可以实现日志记录、任务调度、文件管理等多种实用功能,本文将详细解析如何通过cmd命令获取、处理和应用时间戳,并通过具体示例和表格展示操作方法,获取当前时间戳的cmd命令在cmd……

    2025-11-20
    0
  • net命令建用户的具体步骤是什么?

    在Windows操作系统中,net命令是功能强大的网络命令行工具,其中通过net user子命令可以方便地创建、管理和删除用户账户,尤其适合管理员在无图形界面的服务器环境中进行用户管理操作,以下是关于使用net命令创建用户的详细说明,包括命令语法、参数详解及实际应用场景,net user命令的基本语法为:net……

    2025-11-20
    0
  • xp开机如何运行命令?

    在Windows XP系统中,开机时运行命令是一项非常实用的功能,它允许用户在系统启动过程中自动执行特定的程序或脚本,从而实现系统优化、软件自启动或任务自动化等目的,本文将详细介绍如何在Windows XP中设置开机自运行命令,包括通过系统配置工具、启动文件夹、注册表等多种方法,并附上注意事项和常见问题解答,W……

    2025-11-20
    0

发表回复

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