解决address already in use报错:如何查看占用某个端口的程序并杀死
文章目录
- 问题背景
- 解决策略概述
- 端口占用诊断
- 步骤 1:确认占用端口的进程
- 步骤 2:确认进程的详细信息
- 解决端口占用问题
- 方案 1:安全终止进程
- 方案 2:修改应用配置
- 最佳实践与预防措施
- 端口使用规范
- 开发环境配置
- 进阶技巧
- 批量处理端口占用
- 系统重启后自动启动应用
- 总结
🎉进入云端运维专栏 | 🚀查看更多专栏内容
问题背景
在使用 Linux/Unix 系统进行网络应用开发或部署时,端口占用冲突是一个常见问题。当我们尝试启动一个需要监听特定端口的应用程序时,如果该端口已被其他进程占用,就会遇到类似以下的错误信息:
error while attempting to bind on address ('0.0.0.0', 7861): address already in use
这个错误明确表明我们的应用程序无法绑定到 7861 端口,因为该端口已经被另一个进程占用。本文将详细介绍如何诊断和解决这类端口占用问题。
解决策略概述
面对端口占用问题,我们通常有两种解决方案:
-
修改应用配置,使用另一个可用端口
- 优点:无需干扰现有服务,操作简单安全
- 缺点:可能需要调整多处配置,尤其是在微服务架构中
-
终止占用目标端口的进程
- 优点:保持原有配置不变,避免级联修改
- 缺点:可能会中断重要服务,需谨慎操作
本文将重点介绍第二种方案的实施步骤,帮助您安全有效地解决端口冲突。
端口占用诊断
步骤 1:确认占用端口的进程
使用 lsof
(List Open Files)命令可以查看哪个进程正在使用特定端口。该命令需要 root 权限或 sudo 权限才能查看所有进程:
sudo lsof -i:7861
执行后,系统会返回类似下面的输出:
从输出中我们可以获取关键信息:
- COMMAND:占用端口的程序名称
- PID:进程标识符(32630)
- USER:运行该进程的用户
- FD:文件描述符信息
- TYPE:连接类型
- DEVICE:设备号
- SIZE/OFF:文件大小或偏移量
- NODE:节点号(如 inode)
- NAME:端口信息,格式为
IP:端口
步骤 2:确认进程的详细信息
在决定终止进程前,我们需要进一步了解该进程的用途和重要性。使用以下命令查看进程的当前工作目录,这常常能帮助我们确定进程的身份:
lsof -p 32630 | grep cwd
此外,我们还可以通过以下命令获取更多线索:
# 查看进程完整命令行
ps -fp 32630# 查看进程启动时间和资源使用情况
ps -o pid,lstart,etime,pcpu,pmem -p 32630# 查看进程的所有打开文件
lsof -p 32630
解决端口占用问题
方案 1:安全终止进程
确认占用端口的进程不是关键服务后,我们可以通过以下步骤终止它:
-
首先尝试正常终止进程(发送 SIGTERM 信号):
kill 32630
-
验证进程是否已终止:
lsof -i:7861
-
如果进程仍然存在,可以使用强制终止命令:
kill -9 32630
方案 2:修改应用配置
如果占用端口的是重要服务,或者您无权终止该进程,可以考虑修改自己应用的端口配置:
-
查找可用端口:
netstat -tulpn | grep LISTEN
-
根据应用程序的不同,修改相应的配置文件、启动参数或环境变量以使用新端口
最佳实践与预防措施
端口使用规范
- 避免使用知名端口:尽量避免使用 0-1023 范围内的知名端口
- 记录端口分配:在团队中维护一份端口分配表,避免冲突
- 使用配置化的端口设置:通过配置文件或环境变量设置端口,便于灵活调整
开发环境配置
- 使用动态端口分配:让应用程序自动选择可用端口
- 实施端口冲突检测:在应用启动时检测端口是否可用,提供友好的错误信息
- 容器化隔离:使用 Docker 等容器技术隔离应用环境,通过端口映射解决冲突
进阶技巧
批量处理端口占用
如果需要释放一组端口,可以使用以下脚本:
#!/bin/bash
for port in 7861 7862 7863; dopid=$(lsof -ti:$port)if [ ! -z "$pid" ]; thenecho "Killing process $pid using port $port"kill $pidfi
done
系统重启后自动启动应用
如果您的应用需要在系统启动时自动运行,并且总是使用固定端口,可以考虑:
- 创建 systemd 服务单元文件
- 在服务文件中添加端口依赖和冲突检测
- 配置服务自动重启策略
总结
端口占用问题是服务器应用开发和运维中的常见挑战。通过掌握本文介绍的诊断和解决方法,您可以有效地处理这类问题,确保应用程序的正常运行。在解决问题的同时,建立良好的端口管理实践,可以从根本上减少此类问题的发生频率。
相关文章:
解决address already in use报错:如何查看占用某个端口的程序并杀死
文章目录 问题背景解决策略概述端口占用诊断步骤 1:确认占用端口的进程步骤 2:确认进程的详细信息 解决端口占用问题方案 1:安全终止进程方案 2:修改应用配置 最佳实践与预防措施端口使用规范开发环境配置 进阶技巧批量处理端口占…...
linux 设置tomcat开机自启动
tomcat自启动配置 1.添加tomcat.service文件 vim /etc/systemd/system/tomcat.service 2.编辑文件内容,路径修改为自己的 [Unit] DescriptionTomcat8 Aftersyslog.target network.target remote-fs.target nss-lookup.target[Service] Typeoneshot ExecStart/us…...
如何配置本地git
配置本地 Git 主要包含设置用户信息、配置 SSH 密钥、设置 Git 仓库等步骤,以下是详细的配置过程: 1. 安装 Git 在开始配置之前,你需要先安装 Git。不同操作系统的安装方式有所不同: Windows:访问 Git 官方下载页面&a…...
VSCode 生成HTML 基本骨架
在VSCode 新建html文件中敲一个英文感叹号 ! <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…...
蓝桥杯备考:DFS暴搜之健康的荷斯坦奶牛
这道题数据量很小很小,我们可以用dfs暴搜来搜索 这是我们的决策树 #include <iostream> using namespace std; int n, m; const int N 45; int rq[N]; int g[N][N]; int cnt; int path; int ret 45; int st; bool check() {for (int i 1; i < n; i){in…...
android adjust 卸载与重装监测
想要洞察应用内用户的留存率,可以通过Adjust 的卸载与重装进行监测 名词解释: 卸载:集成完成后,卸载应用,安装状态为:卸载 重装:如果应用已经卸载,但一段时间后又进行安装,则会被视为重装。 📢📢📢:adjust 文件中说到24 小时后,可以再 adjust 控制台看安装…...
WPF Reactive 数据绑定
文章目录 Combox 绑定List-通过枚举绑定方法一:方法二:Button 绑定TextBlock绑定NumericUpDown绑定Expander绑定checkbox绑定NumericUpDownCombox 绑定List-通过枚举绑定 方法一: ViewControl using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; usin…...
2.创建Collection、添加索引、加载内存、预览和搜索数据
milvus官方文档 milvus2.3.1的官方文档地址: https://milvus.io/docs/v2.3.x 使用attu创建collection collection必须要有一个主键字段、向量字段 确保字段类型与索引类型兼容 字符串类型(VARCHAR)通常需要使用 Trie 索引,而不是 AutoInd…...
yaffs
YAFFS(Yet Another Flash File System)是专为NAND闪存设计的日志结构文件系统,其核心原理围绕NAND闪存的特性优化数据管理。以下是其关键原理的详细说明: 1. NAND闪存适配 写入限制:NAND闪存需按页写入(通…...
CMake-环境变量介绍
文章目录 作用域获取环境变量初始化查看特殊的环境变量 环境变量类似普通变量,但也有些不同,如下: 作用域 在一个CMake进程中环境变量具有全局作用域 获取环境变量 使用ENV操作符获取环境变量,例如$ENV{<name>}ÿ…...
wordpress表单插件CF7调用方式
Contact Form 7(CF7)是WordPress中非常流行的表单插件,以下是其常见的调用方式: 通过短代码调用 在页面或文章编辑器中添加:完成表单设置后,复制表单对应的短代码,然后在需要显示表单的页面或文章的编辑器中直接粘贴…...
小程序开发中的用户反馈收集与分析
我们在开发小程序的过程中根据开发过程中的代码及业务场景,以下是针对需求管理系统的用户反馈收集与分析方案设计: 需求管理系统用户反馈收集与分析方案 一、反馈数据模型设计 // 新增Feedback模型(app/admin/model/Feedback.php) namespace app\admin\model; use think\…...
【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解
【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解 (图1-1) 一、鸿蒙中App、HAP、HAR、HSP是什么? (1)App Pack(Application Package) 是应用发布的形态,上架应用市场是以App Pa…...
Linux:一些命令记录
netstat -antp|grep -i 27017 | awk {print $5}| cut -d: -f1 | sort | uniq -c | sort -n 查看磁盘大小 du -sh /usr/local/* 查看剩余内存: free -m linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|gr…...
Microsoft Edge浏览器的取证分析(基于Chromium)
概述 早在2019年,微软就用Chromium替换了EdgeHTML浏览器引擎,这是微软支持谷歌Chrome浏览器的一个开源项目。通过切换到Chromium,Edge与Chrome浏览器共享一个共同的架构,这意味着用于Chrome浏览器调查的取证技术也适用于Edge。 …...
Java面试黄金宝典6
1. 什么是 CAS 原理: CAS (Compare-And-Swap)是一种硬件级别的原子操作指令,在 Java 并发编程中常被用于实现无锁算法。其核心逻辑是:在进行数据更新时,会先将内存位置 V 的值与预期原值 A 进行比较&#x…...
【计算机网络】网络编程
文章目录 1. 客户端/服务器2. TCP/UDP协议3. 网络编程套接字-socket3.1 API的使用3.1 DatagramScoket类3.1 DatagramScoket类 4. 通过UDP实现回显服务器程序4.1 服务器代码4.2 客户端代码4.3 代码执行过程4.4 通过UDP实现翻译客户端 5. 通过TCP实现回显服务器5.1 服务器代码5.2…...
算法刷题整理合集(七)·【算法赛】
本篇博客旨在记录自已的算法刷题练习成长,里面注有详细的代码注释以及和个人的思路想法,希望可以给同道之人些许帮助。本人也是算法小白,水平有限,如果文章中有什么错误或遗漏之处,望各位可以在评论区指正出来…...
【开源宝藏】30天学会CSS - DAY6 第六课 流光文字动画
第 0 步:项目结构 lighting-text/├─ index.html└─ style.cssindex.html:包含列表 <ul>,其中每个 <li> 放一个字母或符号。style.css:设置背景、文字样式,以及关键帧动画(lighting…...
C#与西门子PLC的六大通信库
C#与西门子PLC的六大通信库: 一、S7.NET S7.NET是一款开源的S7协议通信库,支持西门子S7通信。 二、Sharp7 Sharp7与S7.NET一样,是一款.NET版本的S7通信库。 三、Snap7 Snap7是一个开源的C通信库,支持西门子S7通信。 四、Prodave P…...
VScode
由于centos停止了维护 ,后面使用ubuntu 在Ubuntu中用vscode 充当记事本的作用 替代了centos中vim的作用 后面使用vscode编辑 vscode中继续使用makefile , xshell中的cgdb进行debug (半图形写 ,半命令行debug&&运行) 官网下载地址:https://code.visuals…...
Linux文件系统与磁盘管理
文件系统和磁盘管理是Linux系统管理的核心组成部分,直接影响系统的性能、数据安全性和存储效率。本文将从Linux文件系统的基本概念出发,深入探讨其架构、类型、管理工具以及实际操作技巧,帮助读者全面理解并掌握这一关键领域。 第一章&#x…...
【云馨AI-大模型】大模型的开发和应用中,Python、PyTorch和vLLM关系概括
说明 1. Python 定位:基础编程语言。作用:Python 是大模型生态系统的核心语言,几乎所有深度学习框架(如 PyTorch、TensorFlow)和工具链(如 vLLM)都通过 Python 接口提供服务。特点:…...
AWS SAP学习笔记-概念
1、什么是ETL应用程序,举个例子说明? ETL(Extract, Transform, Load)应用程序是一种用于数据处理和迁移的工具或程序,它主要负责从多个数据源提取数据,对数据进行转换和清洗,然后将处理后的数据…...
kotlin知识体系(三) : Android Kotlin 中的函数式编程实践指南
前言 Kotlin以函数式编程革新了Android开发,通过高阶函数、扩展函数等特性,帮助开发者构建高可维护性代码。接下来我们来看一下Kotlin 中的函数式编程的各个特性。 1. 高阶函数与 Lambda 表达式:函数作为参数或返回值 在 Kotlin 中&#x…...
SpringBoot3+Vue3实战(Vue3快速开发登录注册页面并对接后端接口、表单项自定义校验规则、Hutool工具类)(4)
目录 一、SpringBoot3Vue3实现基本增删改查。前后端通信交互、配置后端跨域请求。数据批量删除。(博客链接) 二、SpringBoot3Vue3快速开发登录、注册页面并实现对接。 (1)操作数据表employee(员工信息表)。 <1>修改employee表的字段组成。 <2&g…...
OpenCV图像拼接项目指南
引言 图像拼接是计算机视觉领域中的一个重要应用,它可以将多张有重叠区域的图像拼接成一张全景图。这项技术广泛应用于虚拟现实、医学影像、卫星图像处理等领域。OpenCV作为一个强大的开源计算机视觉库,提供了丰富的工具和函数来实现图像拼接。本文将详…...
机器学习--DBSCAN聚类算法详解
目录 引言 1. 什么是DBSCAN聚类? 2. DBSCAN聚类算法的原理 3. DBSCAN算法的核心概念 3.1 邻域(Neighborhood) 3.2 核心点(Core Point) 3.3 直接密度可达(Directly Density-Reachable) 3…...
使用 Docker 构建 LangChain 开发环镜及 ChatOllama 示例
文章目录 Github官网简介Dockerfilerequirements.txt构建 LangChain 镜像ChatOllama 示例Ollama 示例模拟 tools Github https://github.com/langchain-ai/langchain 官网 https://python.langchain.com/docs/introduction/ 简介 LangChain 是一个用于构建 LLM 驱动的应用…...
持续集成与持续交付:这里有从开发到部署的全流程优化
阅读原文 在上一篇中,我们深入探讨了安全测试的核心内容,强调了它在发现安全漏洞和提升系统安全性中的重要作用。接下来,我们将聚焦于持续集成(CI)与持续交付(CD),这是现代软件开发…...
CH32V208蓝牙内部带运放32位RISC-V工业级微控制器CH32V208CBU6、CH32V208GBU6开发板原理图和PCB
开发板 CH32V208CBU6立创格式的开发板上述链接可下载,官方文件进行了转换,使用前请仔细核对。 CH32V208CBU6原理图,上述图片为芯片部分。已进行DRC。 CH32V208CBU6 PCB三维图,上述图片为芯片部分。已进行DRC。 CH32V208GBU6开发…...
机器臂运动控制算法工程师面试
大厂的经验总结: 一、基础概念理解 请解释机器臂运动学正解和逆解的概念,并分别说明其用途。 正解:已知机器臂各关节的角度(或位移),通过运动学模型计算出机器臂末端执行器在笛卡尔空间中的位置和姿态。用途在于可以根据给定的关节驱动值,预测末端的实际位置,用于运动…...
【一起来学kubernetes】21、Secret使用详解
Secret 的详细介绍 Secret 是 Kubernetes 中用于存储和管理敏感信息(如密码、令牌、密钥等)的资源对象。Secret的设计目的是为了安全地存储和传输敏感信息,如密码、API密钥、证书等。这些信息通常不应该直接硬编码在配置文件或镜像中&#x…...
Java架构师成长之路
概述 本教程主要从6个方面,全面讲解Java技术栈的知识。 1.性能调优 深入理解MySQL底层原理、索引逻辑,数据结构与算法。使用Explain进行优化分析MVCC原理剖析日志机制解析 2.框架源码 掌握Spring底层原理带你手写一个Spring解析IOC、AOP源码、以及事…...
Cyberchef实用功能之-json line格式文件美化和查询
本文将介绍一下如何使用cyberchef对json line格式数据进行美化方便阅读,以及json line格式数据的批量查询操作。 之前的文章介绍了json格式数据的美化和查询,即Cyberchef实用功能之-json解析美化和转换,Cyberchef实用功能之-批量提取json数据…...
span与span之间的空白如何解决?
<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>标题</title> <style>div{background: yellow;}span:first-of-type{background: red;}span:last-of-type{background: blue;}</styl…...
2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题全过程文档加程序
2024年第十四届MathorCup高校数学建模挑战赛 B题 甲骨文智能识别中原始拓片单字自动分割与识别研究 原题再现: 甲骨文是我国目前已知的最早成熟的文字系统,它是一种刻在龟甲或兽骨上的古老文字。甲骨文具有极其重要的研究价值,不仅对中国文…...
3.23学习总结
字符串 String java.lang,String 类代表字符串,Java程序中所有的字符串文字都为此类的对象 字符串的内容是不会发生改变的,它的对象在创建之后不能呗更改 字符串的内存模型 当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在。 …...
RT-Thread CI编译产物artifacts自动上传功能介绍
近期在RT-Thread开源项目中,我们引入了一项实用的功能改进——将每次CI(持续集成)编译生成的产物(artifacts)自动上传到GitHub,方便开发者和用户能够更便捷地获取和测试最新的编译结果。 参考链接…...
Android adb调试应用程序
启动app 有的时候app不是预先安装的,也不能从界面start一个app,这时需要后台拉起app。 $adb shell am start package.name/Activity.name 例如,android原生camera app, 包名为com.android.camera2, mainActivity名为…...
仅靠prompt,Agent难以自救
Alexander的观点很明确:未来 AI 智能体的发展方向还得是模型本身,而不是工作流(Work Flow)。还拿目前很火的 Manus 作为案例:他认为像 Manus 这样基于「预先编排好的提示词与工具路径」构成的工作流智能体,…...
【嵌入式学习2】函数
目录 ## 函数 ## 函数分类 ## 函数定义 1、无参数无返回值 2、有参数无返回值 3、有参数有返回值 ## 函数声明 ## 局部变量和全局变量 ## 多文件编程 如何避免把同一个头文件 include 多次,或者头文件嵌套包含? 命令行编译文件 头文件包含的…...
平芯微PW5012应用电路
PW5012应用电路板介绍: 1.1 单节和两节锂电池升压 12V 或 9V, 1A 至 3A 电路板, 1.2 应用: 升压电压转换板 1.3 VIN 输入电压: 3V-9V 1.4 VOUT 输出电压: 9V 2A(VIN3.7V) ࿰…...
Langchain4J框架相关面试题
以下是关于Langchain4J框架的面试题目及答案 ### Langchain4J基础概念类 1. **Langchain4J框架是什么?它的核心功能有哪些?** Langchain4J是一个用于构建语言模型应用的Java框架,它为开发者提供了一套简洁高效的API,使得在Jav…...
【MySQL】用户管理
目录 一、用户1.1 用户信息1.2 创建用户1.3 删除用户1.4 修改用户密码1.4.1 用户修改自己密码1.4.2 root用户修改指定用户的密码 二、数据库的权限2.1 给用户授权2.2 回收用户权限 结尾 一、用户 1.1 用户信息 MySQL中的用户,都存储在系统数据库mysql的user表中。…...
5.高频加热的原理与常用集成电路介绍
一、高频加热的类型 利用高频电源加热通常由两种方法:电介质加热(被加热物体绝缘)与感应加热(被加热物体导电),详细解释如下: 电介质加热(利用高频电压的高频电场导致物体自身分子摩…...
Elasticsearch:可配置的推理 API 端点分块设置
作者:来自 Elastic Daniel Rubinstein Elasticsearch 开放推理 API 现已支持可配置的分块,以便在文档摄取时处理语义文本字段。 Elasticsearch 推理 API 允许用户利用各种提供商的机器学习模型执行推理操作。其中一个常见用例是在索引中支持用于语义搜索…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.2多头注意力扩展与掩码机制(因果掩码与填充掩码)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.2 多头注意力扩展与掩码机制(`因果掩码与填充掩码`)1. 多头注意力机制:分治策略的数学实现1.1 多头注意力核心公式2. 逐行代码实现2.1 多头拆分与合并3. 掩码机制:注意力控制的核心技术3.1 因果…...
Scikit-learn模型评估全流程解析:从数据划分到交叉验证优化
模型评估的步骤、scikit-learn函数及实例说明 1. 数据划分(Train-Test Split) 函数:train_test_split使用场景:将数据分为训练集和测试集,避免模型过拟合。作用:确保模型在未见过的数据上验证性能。示例&…...
大模型量化框架GPTQModel的基本使用方法
接上一篇博客:AutoGPTQ报torch._C._LinAlgError: linalg.cholesky: The factorization could not be completed的解决办法-CSDN博客 如果Llama factory量化一直报错,可以改用其他的量化框架,例如GPTQ:https://github.com/ModelCl…...