在Linux系统使用过程中,查看端口占用情况是非常常见的操作,无论是部署服务时排查端口是否被占用,还是定位异常进程对应的网络端口,都需要用到相关的端口查看命令。不同命令在输出内容、执行效率和适用环境上各有特点,掌握这些命令能够帮助系统管理员更高效地完成网络排错与资源检查工作。

常用的Linux端口查看命令
Linux系统中用于查看端口占用情况的工具主要包括netstat、lsof和ss。三者都能列出网络连接状态,但底层实现和默认安装情况有所差异。下面分别介绍这些命令的参数和使用方法。
1. netstat命令
netstat是较早出现的网络状态查看工具,能够显示网络连接、路由表、接口统计等信息,也可以用来查看端口占用情况。部分较新的Linux发行版默认没有安装netstat,需要先安装net-tools工具包。
netstat的常用参数含义如下:-t表示显示TCP协议的连接;-u表示显示UDP协议的连接;-l表示仅显示监听状态的端口;-n表示以数字形式显示地址和端口号,不进行域名解析;-p表示显示占用端口的进程ID和进程名称。
查看所有监听的TCP和UDP端口以及对应的进程信息,可以使用以下命令:
# 查看监听的TCP和UDP端口及对应进程 netstat -tulnp
如果只想查看指定端口的占用情况,例如查看8080端口是否被占用,可以结合grep命令过滤:
# 查看8080端口占用情况 netstat -tulnp | grep 8080
2. lsof命令
lsof是list open files的缩写,用于列出当前系统打开的文件。在Linux中一切皆文件,网络连接也属于文件范畴,因此可以使用lsof查看端口占用情况。部分系统默认未预装lsof,需要安装lsof工具包。
查看指定端口占用的常用命令格式为:
# 查看8080端口对应的进程信息 lsof -i:8080
参数-i表示查看网络相关的文件,后面跟上端口号即可指定查询的端口。输出结果会包含进程的用户、PID、文件描述符、协议类型、端口状态等信息。
如果要查看所有TCP监听端口,可以使用以下命令:
# 查看所有TCP监听端口 lsof -iTCP -sTCP:LISTEN
3. ss命令
ss是socket statistics的缩写,是较新的网络状态查看工具,功能类似netstat,但是性能更好,执行速度更快。在较新的Linux发行版中推荐使用ss命令替代netstat。
ss的常用参数和netstat类似,查看监听端口的常用命令如下:
# 查看所有监听的TCP和UDP端口及对应进程 ss -tulnp
查看指定端口占用情况的命令:
# 查看8080端口占用情况 ss -tulnp | grep 8080
不同命令的适用场景
如果当前使用的Linux发行版较新,建议优先使用ss命令。ss基于内核套接字统计信息进行查询,执行效率更高,在大量连接的情况下响应速度明显优于传统netstat,输出信息也更简洁,适合日常快速排查端口监听状态。
如果系统已经安装了netstat,或者管理员习惯使用传统命令,也可以使用netstat。netstat在旧版本系统中比较常见,很多既有脚本和运维文档仍然沿用netstat参数语法,因此熟悉netstat在维护历史环境时仍然很有必要。
如果需要更详细的进程打开文件信息,或者要查询非监听状态的端口连接,lsof会更合适。lsof能够展示每个网络连接对应的文件描述符和进程上下文,适合深入分析某个进程占用了哪些网络资源,以及某个端口被哪个进程所使用。
注意事项
以上命令大部分需要root权限才能查看所有进程对应的端口信息。如果使用普通用户执行,可能只能看到当前用户进程占用的端口。如果需要查看系统所有端口占用情况,建议在命令前加上sudo获取权限。
# 使用sudo执行ss命令查看所有端口 sudo ss -tulnp
如果执行命令时提示命令不存在,需要先安装对应的工具包。不同发行版的包管理器有所不同,在Ubuntu/Debian系统中通常使用apt命令安装net-tools和lsof:
# Ubuntu/Debian安装相关工具 sudo apt update sudo apt install net-tools lsof
在CentOS/RHEL系统中则使用yum命令安装对应的工具包:
# CentOS/RHEL安装相关工具 sudo yum install net-tools lsof
总体而言,掌握netstat、lsof和ss命令的常用参数,再结合sudo权限、grep过滤以及对应系统的包管理器安装操作,就能在日常运维中高效完成Linux端口查看与进程定位工作。