news 2026/4/28 2:50:43

fft npainting lama进程被占用?端口冲突解决步骤详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
fft npainting lama进程被占用?端口冲突解决步骤详解

FFT NPainting LaMa进程被占用?端口冲突解决步骤详解

1. 问题背景:为什么LaMa WebUI启动失败?

你兴冲冲地执行了bash start_app.sh,终端却迟迟没有出现那句熟悉的提示:

✓ WebUI已启动 访问地址: http://0.0.0.0:7860

或者更糟——直接报错:

OSError: [Errno 98] Address already in use

又或者浏览器打开http://你的IP:7860显示“无法连接”……
别急,这不是模型坏了,也不是代码错了——大概率是端口被占用了

FFT NPainting LaMa 是一个基于 Python Flask + Gradio 构建的图像修复 WebUI,它默认监听7860 端口。这个端口一旦被其他进程(比如另一个正在运行的 WebUI、调试中的 Jupyter、甚至某个残留的 Python 进程)抢先绑定,新服务就再也“抢不到座位”,只能安静退出。

这个问题在二次开发、多项目共存、服务器重启不彻底等场景中极为常见。本文不讲原理套话,只给你可立即执行、一步到位的排查与解决流程——从定位到清理,全程命令可复制粘贴,小白也能 5 分钟搞定。


2. 快速诊断:确认是否真为端口冲突?

别猜,先验证。三行命令,30 秒内锁定问题根源。

2.1 检查服务是否真的在运行

打开终端,执行:

ps aux | grep "app.py\|gradio"

如果看到类似输出(含python app.pygradio关键字),说明服务已在后台运行:

root 12345 0.2 3.1 2456789 123456 ? Sl Jan05 12:34 python app.py

❌ 如果只看到grep --color=auto app.py这一行,说明服务根本没起来,极可能卡在端口绑定阶段。

2.2 直接检查 7860 端口占用情况

这才是关键一步:

lsof -ti:7860
  • 有数字输出(如12345)→ 表示 PID 为 12345 的进程正占用 7860 端口
  • ❌ 无任何输出 → 端口空闲,问题不在端口冲突(请检查防火墙、网络配置或app.py启动日志)

小知识:lsof是 “list open files” 的缩写,在 Linux 中,端口被视为一种“网络文件”。-t表示只输出 PID,-i:7860表示筛选 7860 端口。

2.3 查看启动日志,确认失败原因

如果start_app.sh执行后一闪而过,没看清报错,可以查看最近一次启动的完整日志:

cd /root/cv_fft_inpainting_lama tail -n 50 nohup.out

重点关注包含OSErrorAddress already in usebindport的行。这是最直接的证据。


3. 根治方案:四步清除占用进程(推荐顺序执行)

按以下顺序操作,覆盖 99% 场景。建议逐条执行,不要跳步

3.1 方案一:优雅停止(首选,安全无损)

如果你记得上次是用nohupscreen启动的,优先尝试优雅退出:

# 方法1:查找并发送终止信号(推荐) lsof -ti:7860 | xargs kill -15 # 方法2:如果知道进程名,直接杀 pkill -f "app.py" pkill -f "gradio"

-15是 SIGTERM 信号,相当于“请主动退出”,进程有机会释放资源、保存状态,最安全。

验证:再次执行lsof -ti:7860,应无输出。

3.2 方案二:强制终止(当优雅停止无效时)

如果kill -15没反应(进程僵死),果断强杀:

lsof -ti:7860 | xargs kill -9

-9是 SIGKILL,操作系统级强制终结,无条件回收所有资源。

注意:此操作会丢失该进程当前未保存的数据(对 LaMa 来说,仅影响未完成的修复任务,无文件损失)。

3.3 方案三:一键清理所有可疑 Python 进程(谨慎使用)

如果你不确定哪个进程在捣鬼,或lsof没查出但端口仍被占(罕见,可能是内核残留),可清理所有非系统 Python 进程:

# 列出所有 Python 进程(排除系统关键进程) ps aux | grep python | grep -v "systemd\|dbus\|snapd" # 确认无误后,再执行(仅限测试/开发机!) pkill -f "python.*app\.py\|gradio\|inpainting"

生产环境慎用!务必先ps aux | grep python确认列表,避免误杀数据库、监控等核心服务。

3.4 方案四:更换端口启动(临时绕过,适合多开调试)

如果不想杀进程(比如同事正在用),可快速换端口启动你的 LaMa:

cd /root/cv_fft_inpainting_lama # 修改启动脚本,指定新端口(如 7861) sed -i 's/port=7860/port=7861/g' start_app.sh bash start_app.sh

然后访问http://你的IP:7861即可。
提示:修改start_app.sh前,建议先备份:cp start_app.sh start_app.sh.bak


4. 预防措施:避免下次再踩坑

一次解决是救火,持续预防才是高手。

4.1 启动时自动检测端口并提示

编辑/root/cv_fft_inpainting_lama/start_app.sh,在python app.py命令前加入端口检查逻辑:

#!/bin/bash PORT=7860 if lsof -ti:$PORT > /dev/null; then echo "❌ 端口 $PORT 已被占用!" echo " 占用进程:" lsof -ti:$PORT | xargs ps -p echo " 解决方案:" echo " 1. 执行 'lsof -ti:$PORT | xargs kill -15' 优雅停止" echo " 2. 或执行 'lsof -ti:$PORT | xargs kill -9' 强制终止" exit 1 fi echo " 端口 $PORT 空闲,正在启动..." nohup python app.py --port $PORT > nohup.out 2>&1 & echo " WebUI 已启动,访问 http://0.0.0.0:$PORT"

这样每次启动前都会自动检查,失败时给出明确指引,告别盲目排查。

4.2 使用进程管理工具(进阶推荐)

对于长期部署,建议用supervisorsystemd管理进程,实现:

  • 自动重启崩溃服务
  • 统一日志管理
  • 端口独占保障

示例supervisor配置(/etc/supervisor/conf.d/lama.conf):

[program:lama] command=python /root/cv_fft_inpainting_lama/app.py --port=7860 directory=/root/cv_fft_inpainting_lama user=root autostart=true autorestart=true stderr_logfile=/var/log/lama_error.log stdout_logfile=/var/log/lama_access.log environment=PYTHONPATH="/root/cv_fft_inpainting_lama"

启用:supervisorctl reread && supervisorctl update && supervisorctl start lama


5. 进阶排查:当lsof也查不到占用时

极少数情况下(如容器网络、内核模块异常),lsof可能无法识别占用者。此时用更底层的工具:

5.1 使用netstat(兼容性更好)

netstat -tuln | grep :7860 # 输出示例:tcp6 0 0 :::7860 :::* LISTEN 12345/python

5.2 检查 Docker 容器(如果你用容器部署)

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" | grep 7860 # 若有输出,说明某容器映射了该端口,执行: # docker stop <容器名>

5.3 检查防火墙/SELinux(仅限 CentOS/RHEL)

# 检查是否被防火墙拦截(非占用,但表现相似) firewall-cmd --list-ports | grep 7860 # 临时放行(测试用) firewall-cmd --add-port=7860/tcp --permanent && firewall-cmd --reload

6. 故障排除清单(自查速查表)

遇到启动失败?对照这张表,30 秒定位:

现象最可能原因快速验证命令解决动作
终端无任何输出,直接返回start_app.sh权限不足ls -l start_app.shchmod +x start_app.sh
报错ModuleNotFoundErrorPython 环境缺失依赖pip list | grep gradiopip install -r requirements.txt
浏览器显示“连接被拒绝”端口被占 or 服务未启动lsof -ti:7860按本文第3节清理
访问白屏/加载失败静态资源路径错误ls -l static/检查app.pystatic_folder路径
修复按钮点击无反应前端 JS 加载失败浏览器 F12 → Console检查static/js/文件完整性

7. 总结:端口冲突不是 Bug,是运维常识

FFT NPainting LaMa 的强大无需赘述——它让图像修复变得像修图一样直观。而端口冲突,不过是每个开发者都会遇到的“小门槛”。掌握本文的四步清理法、端口自检脚本和supervisor部署方案,你就已经超越了 80% 的使用者。

记住三个关键动作:
🔹lsof -ti:7860是你的第一双眼睛
🔹kill -15优先,kill -9断后
🔹:给start_app.sh加上端口检测,一劳永逸

现在,回到终端,敲下那行命令吧。几秒之后,你将再次看到那个熟悉的界面——白色画笔划过,瑕疵悄然消失,而你,掌控全局。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 15:02:15

Qwen3-Embedding-4B镜像使用:JupyterLab验证全流程

Qwen3-Embedding-4B镜像使用&#xff1a;JupyterLab验证全流程 你是不是也遇到过这样的问题&#xff1a;想快速验证一个新嵌入模型的效果&#xff0c;但光是搭环境就卡了两小时&#xff1f;下载权重、配依赖、调端口、写客户端……还没开始跑数据&#xff0c;人已经累了。今天…

作者头像 李华
网站建设 2026/4/20 18:05:24

Qwen3-0.6B部署优化案例:通过API流式传输降低延迟

Qwen3-0.6B部署优化案例&#xff1a;通过API流式传输降低延迟 1. 为什么小模型也需要关注延迟&#xff1f; 你可能觉得&#xff1a;0.6B参数的模型&#xff0c;体积小、推理快&#xff0c;延迟不是天然就低吗&#xff1f; 但现实往往没这么简单。在实际部署中&#xff0c;我们…

作者头像 李华
网站建设 2026/4/27 19:48:45

BERT-base-chinese性能优化:400MB模型GPU利用率提升实战

BERT-base-chinese性能优化&#xff1a;400MB模型GPU利用率提升实战 1. 为什么一个400MB的中文BERT模型值得深度调优 你有没有遇到过这样的情况&#xff1a;明明只跑一个轻量级的中文BERT模型&#xff0c;GPU显存占用不到30%&#xff0c;但实际推理吞吐却卡在每秒20次上下&am…

作者头像 李华
网站建设 2026/4/21 23:28:52

IAR软件安装图解说明:直观展示每一步操作细节

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。全文已彻底去除AI生成痕迹&#xff0c;采用真实嵌入式工程师口吻写作&#xff0c;逻辑层层递进、语言自然流畅&#xff0c;兼具教学性、实战性与行业洞察力。所有技术细节均严格基于IAR官方文档、实际部署经验…

作者头像 李华
网站建设 2026/4/19 0:24:49

Glyph实战应用:将千字文章转为图像高效处理

Glyph实战应用&#xff1a;将千字文章转为图像高效处理 在日常工作中&#xff0c;我们经常需要处理长篇幅的文本内容——比如技术文档、产品说明书、新闻稿或学术论文。这些文本动辄上千字&#xff0c;传统的大模型处理方式受限于上下文窗口长度&#xff0c;往往需要分段输入、…

作者头像 李华
网站建设 2026/4/21 13:14:40

python159网上书店系统vue3

目录 技术栈与框架核心功能模块关键代码示例&#xff08;Vue 3&#xff09;数据库设计要点部署与优化扩展方向 开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 技术栈与框架 采用Vue 3作为…

作者头像 李华