在linux系统使用过程中,查看端口占用情况是非常常见的操作,无论是部署服务时排查端口是否被占用,还是定位异常进程对应的网络端口,都需要用到相关的端口查看命令。不同的命令有不同的特点和适用场景,掌握这些命令能让系统操作更高效。

常用的linux端口查看命令
1. netstat命令
netstat是比较传统的网络状态查看工具,能够显示网络连接、路由表、接口统计等信息,也可以用来查看端口占用情况。不过部分较新的linux发行版默认没有安装netstat,需要先安装net-tools工具包。
常用的查看端口参数组合如下:
- -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命令,它的执行效率更高,输出信息也更简洁。如果系统已经安装了netstat,或者习惯使用传统命令,也可以使用netstat。如果需要更详细的进程打开文件信息,或者要查询非监听状态的端口连接,lsof会更合适。
注意事项
以上命令大部分需要root权限才能查看所有进程对应的端口信息,如果是普通用户执行,可能只能看到当前用户进程占用的端口。如果需要查看系统所有端口占用情况,建议在命令前加上sudo获取权限:
# 使用sudo执行ss命令查看所有端口 sudo ss -tulnp
另外,如果执行命令时提示命令不存在,需要先安装对应的工具包,比如在Ubuntu/Debian系统中安装net-tools和lsof:
# Ubuntu/Debian安装相关工具 sudo apt update sudo apt install net-tools lsof
在CentOS/RHEL系统中安装对应的工具包:
# CentOS/RHEL安装相关工具 sudo yum install net-tools lsof