Ubuntu系统端口查询与管理的详细分析

 更新时间:2024年11月13日 09:45:05   作者:码农研究僧  
事情起因是宝塔的CPU负载过大,重启服务进程之后还是爆,后续发现是端口被占用,导致服务重启不起来,所以本文给大家介绍了Ubuntu系统端口查询与管理的详细分析,需要的朋友可以参考下

前言

Window的端口被占用,事情起因是宝塔的CPU负载过大,重启服务进程之后还是爆,后续发现是端口被占用,导致服务重启不起来!

对应需要kill相关进程的端口即可,对此补充相关知识

1. 查询端口占用情况

使用 lsof 命令查询端口占用

lsof(list open files)是一个强大的工具,用来列出系统中打开的文件,包括网络连接、端口等

查询特定端口(例如 48080)被哪个进程占用:sudo lsof -i :48080

参数描述
COMMAND进程名(例如 nginx、java)
PID进程的ID(进程标识符)
USER进程的拥有者
FD文件描述符(表示文件类型和打开模式)
TYPE连接类型(IPv4、IPv6)
DEVICE、SIZE/OFF、NODE网络连接的详细信息
NAME端口或IP地址信息

示例输出:

COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    2081361 www    6u  IPv6  842221658      0t0  TCP localhost:48080->localhost:49738 (CLOSE_WAIT)
java    2081361 www   21u  IPv6  842220852      0t0  TCP localhost:48080->localhost:47856 (CLOSE_WAIT)
java    2081361 www  194u  IPv6  841638236      0t0  TCP *:48080 (LISTEN)

此命令代表java 进程(PID:2081361)正在监听端口 48080

使用 netstat 命令查询端口占用

netstat(network statistics)命令可以用来显示网络连接、路由表、接口统计信息等

要查看所有占用端口的进程:sudo netstat -tuln

参数描述
Proto协议(TCP或UDP)
Recv-Q、Send-Q接收队列和发送队列的大小
Local Address本地地址和端口
Foreign Address远程地址和端口(对于监听中的端口为空)
State连接状态(如 LISTEN 表示正在监听)
PID/Program name进程ID和程序名称(需要-p选项)

查看端口 48080 是否被占用:sudo netstat -tuln | grep :48080

示例输出:

tcp6       0      0 :::48080                :::*                    LISTEN

此命令代表48080 端口在系统中是监听状态

使用 ss 命令查询端口占用

ss(socket statistics)是一个比 netstat 更快速的工具,它可以用于查看网络连接、监听端口等信息

查看所有监听端口:sudo ss -tuln

查看特定端口:sudo ss -tuln | grep :48080

示例输出:

LISTEN   0         128                *:48080             *:*                  

这表示端口 48080 正在监听中

2. 释放占用的端口

确认端口被某个进程占用时,可以选择停止该进程或杀死该进程以释放端口

停止服务进程

确认是一个服务进程(如 nginx 或 apache)占用了端口,可以通过系统的服务管理工具停止该服务

sudo systemctl stop nginx

或者,如果是其他服务(比如 Tomcat 或 MySQL),可以使用类似的命令来停止它们

杀死占用端口的进程

希望直接杀死占用端口的进程(如 java 进程),可以使用 kill 命令
使用 lsof 或 netstat 找到占用端口的进程ID(PID)

假设PID是 2081361,可以通过以下命令停止它:sudo kill -9 2081361-9 参数表示强制杀死该进程

3. 修改应用程序的端口

不希望停止其他进程,另一种解决方案是修改你正在运行的应用程序使用不同的端口

修改 Spring Boot 的端口

在Spring Boot应用中,可以修改 application.properties 或 application.yml 文件来设置新的端口

application.properties: server.port=8081

application.yml:

server:
  port: 8081

保存后重启Spring Boot应用,新的端口配置生效

修改其他应用程序的端口

对于其他应用程序(例如 Node.js、Tomcat、nginx 等),也可以在它们的配置文件中修改端口

到此这篇关于Ubuntu系统端口查询与管理的详细分析的文章就介绍到这了,更多相关Ubuntu端口查询与管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论