在Linux系统中部署Web应用或者中间件时,8080端口是常用的服务端口,很多时候应用启动失败就是因为该端口已经被其他进程占用。我们可以通过多种系统命令快速查看8080端口的占用情况。

使用netstat命令查看
netstat是Linux系统中常用的网络状态查看工具,能够显示网络连接、路由表、接口统计等信息。要查看8080端口是否被占用,可以执行以下命令:
# 查看8080端口的占用情况,-t表示TCP协议,-u表示UDP协议,-l表示监听状态,-n表示显示数字地址,-p表示显示进程ID和名称 netstat -tulnlp | grep 8080
如果命令有输出结果,说明8080端口已经被占用,输出内容中会包含占用端口的进程ID和进程名称。如果没有任何输出,说明该端口当前没有被占用。
使用lsof命令查看
lsof命令可以列出当前系统打开的所有文件,在Linux中网络连接也属于文件范畴,因此可以通过该命令查看端口占用情况:
# 查看8080端口的占用情况,-i表示查看网络文件,:8080指定端口号 lsof -i:8080
如果端口被占用,输出结果会显示进程的命令、进程ID、用户、文件描述符等信息。如果提示没有该命令,需要先安装lsof工具,比如使用yum install lsof或者apt install lsof命令安装。
使用ss命令查看
ss是比netstat更高效的网络状态查看工具,它是iproute2工具包的一部分,在很多新版本的Linux系统中已经默认替代了netstat:
# 查看8080端口的占用情况,-t表示TCP,-u表示UDP,-l表示监听,-n表示数字显示,-p表示进程信息 ss -tulnp | grep 8080
该命令的输出格式和netstat类似,同样可以直观看到8080端口是否被占用以及对应的进程信息。
处理端口占用问题
如果确认8080端口被不需要的进程占用,可以通过以下方式关闭对应进程:
- 首先通过上面的命令获取占用端口的进程ID,比如进程ID是1234
- 执行
kill 1234命令尝试正常关闭进程 - 如果进程无法正常关闭,可以执行
kill -9 1234强制关闭进程
如果是需要保留的进程占用了8080端口,可以修改自己应用的配置文件,更换为其他未被占用的端口启动服务。
常见问题说明
执行上述命令时如果没有显示进程信息,可能是因为当前用户权限不足,可以在命令前加上sudo获取管理员权限后重新执行,比如sudo netstat -tulnlp | grep 8080。
另外需要注意,8080端口可能被TCP协议占用,也可能被UDP协议占用,上述命令默认会同时检查两种协议的端口占用情况,如果只需要检查TCP协议的占用,可以去掉命令中的u参数。