news 2026/4/16 2:03:24

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/16 11:10:33

为什么推荐cv_resnet18_ocr-detection?五大优势告诉你

为什么推荐cv_resnet18_ocr-detection&#xff1f;五大优势告诉你 1. 轻量高效&#xff1a;ResNet18骨架带来的速度与精度平衡 在OCR文字检测领域&#xff0c;模型大小和推理速度往往是一对矛盾体。很多高精度模型动辄需要RTX 3090级别的显卡才能流畅运行&#xff0c;而轻量模…

作者头像 李华
网站建设 2026/4/15 22:33:50

5个开源代码模型部署推荐:IQuest-Coder-V1镜像免配置快速上手

5个开源代码模型部署推荐&#xff1a;IQuest-Coder-V1镜像免配置快速上手 你是不是也遇到过这些情况&#xff1a;想试试最新的代码大模型&#xff0c;结果卡在环境配置上一整天&#xff1b;下载完模型发现显存不够&#xff0c;改参数调半天还是报错&#xff1b;好不容易跑起来…

作者头像 李华
网站建设 2026/4/16 11:14:03

手机端AI革命开始!Open-AutoGLM初体验完整记录

手机端AI革命开始&#xff01;Open-AutoGLM初体验完整记录 1. 这不是“手机助手”&#xff0c;是能自己点屏幕的AI同事 你有没有过这样的时刻&#xff1a; 想订外卖&#xff0c;却在美团、饿了么、抖音团购之间反复切换比价&#xff1b; 想查航班&#xff0c;得手动打开航旅纵…

作者头像 李华
网站建设 2026/4/16 13:03:01

Qwen-Image-Edit-2511让非专业用户也能精修图

Qwen-Image-Edit-2511让非专业用户也能精修图 你有没有过这样的经历&#xff1a;拍了一张很满意的合影&#xff0c;但其中一人闭眼了&#xff1b;或者精心设计的产品图&#xff0c;换背景后人物边缘发虚、logo变形&#xff1b;又或者想给朋友圈配一张“复古胶片风”的自拍照&a…

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

无需公网IP也能用:Paraformer Gradio本地映射访问实战指南

无需公网IP也能用&#xff1a;Paraformer Gradio本地映射访问实战指南 你是否遇到过这样的困扰&#xff1a;手头有一台配置不错的GPU服务器&#xff0c;部署好了Paraformer语音识别模型&#xff0c;Gradio界面也跑起来了&#xff0c;但平台不分配公网IP&#xff0c;也无法直接…

作者头像 李华
网站建设 2026/4/16 14:37:54

Windows下Multisim14.0主数据库丢失的完整指南

以下是对您提供的技术博文进行 深度润色与工程化重构后的终稿 。全文严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、专业、有“人味”,像一位资深EDA工程师在技术社区分享实战心得; ✅ 所有模块(引言/原理/诊断/服务机制/恢复流程)被有机融合为一条逻辑清晰、层…

作者头像 李华