在Linux系统使用过程中,服务部署、应用调试等场景经常会遇到端口被占用的情况,导致新的服务无法正常启动。掌握查看端口占用情况的方法,是Linux使用者必备的基础技能,能够快速定位问题根源,减少排查时间。

常用端口查看命令介绍
1. 使用netstat命令查看
netstat是Linux系统中传统的网络状态查看工具,能够显示网络连接、路由表、接口统计等信息,通过特定参数可以筛选端口占用情况。
查看指定端口是否被占用的命令格式如下:
# 查看8080端口是否被占用,包含进程信息 netstat -tulnp | grep 8080
参数说明:
- -t:显示TCP协议的连接
- -u:显示UDP协议的连接
- -l:仅显示监听状态的连接
- -n:以数字形式显示地址和端口号,不进行域名解析
- -p:显示占用端口的进程ID和进程名称
如果命令有输出结果,说明端口已经被占用,结果中会包含协议类型、本地地址、端口号、进程ID和进程名称。如果没有输出,则端口未被占用。
2. 使用lsof命令查看
lsof命令用于列出当前系统打开的文件,在Linux中一切皆文件,网络连接也属于文件范畴,因此可以通过lsof查看端口占用情况。
查看指定端口占用的命令如下:
# 查看8080端口的占用情况 lsof -i:8080
参数说明:
- -i:指定查询网络文件,后面可以跟协议和端口,格式为
协议:端口,协议可省略,默认查询TCP和UDP
输出结果会包含进程名称、进程ID、用户、文件描述符、协议类型、本地地址和端口等信息,方便快速定位占用端口的进程。
3. 使用ss命令查看
ss是Linux系统中较新的网络状态查看工具,功能类似netstat,但是执行效率更高,尤其是在连接数较多的场景下表现更优,现在很多Linux发行版已经默认推荐使用ss替代netstat。
查看指定端口占用的命令如下:
# 查看8080端口是否被占用 ss -tulnp | grep 8080
ss的参数和netstat大部分通用,上述命令的参数含义和netstat的一致,输出结果格式也类似,能够快速展示端口的占用状态和对应进程信息。
如何终止占用端口的进程
如果确认端口被不需要的进程占用,需要终止该进程释放端口,步骤如下:
首先通过上述任意一种命令获取到占用端口的进程ID,比如查询到8080端口被进程ID为1234的进程占用,执行以下命令终止进程:
# 终止进程ID为1234的进程 kill 1234 # 如果进程无法终止,使用强制终止命令 kill -9 1234
进程终止后,可以再次执行端口查看命令确认端口是否已经释放。
不同场景的使用建议
如果是较老的Linux系统,可能默认没有安装ss命令,此时可以优先使用netstat命令;如果是新版本的Linux系统,推荐使用ss命令,查询速度更快。如果需要更详细的进程打开文件信息,lsof命令会更合适。日常排查端口占用问题时,可以结合多个命令交叉验证,确保结果的准确性。