news 2026/6/7 6:46:26

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/5/28 23:33:00

为什么YOLO11训练总失败?GPU适配问题实战解析

为什么YOLO11训练总失败&#xff1f;GPU适配问题实战解析 你是不是也遇到过这样的情况&#xff1a;刚下载好YOLO11代码&#xff0c;满怀信心地跑起python train.py&#xff0c;结果终端里一连串红色报错——CUDA out of memory、device not found、no module named torch、甚至…

作者头像 李华
网站建设 2026/6/4 2:26:30

DeepSeek-R1-Distill-Qwen-1.5B部署案例:多用户并发访问优化

DeepSeek-R1-Distill-Qwen-1.5B部署案例&#xff1a;多用户并发访问优化 你是不是也遇到过这样的情况&#xff1a;模型本地跑得飞快&#xff0c;一上线就卡顿&#xff1f;刚搭好Web服务&#xff0c;几个同事同时试用&#xff0c;响应直接变“PPT”&#xff1f;别急&#xff0c…

作者头像 李华
网站建设 2026/5/30 21:08:58

YOLOv13镜像实测AP达41.6,精度惊人

YOLOv13镜像实测AP达41.6&#xff0c;精度惊人 在目标检测工程落地的现实场景中&#xff0c;一个长期存在的矛盾日益凸显&#xff1a;模型论文里亮眼的指标&#xff0c;为何总在真实部署时打七折&#xff1f;训练环境与生产环境的差异、小模型精度不足与大模型推理卡顿的两难、…

作者头像 李华
网站建设 2026/5/28 15:13:00

【含文档+PPT+源码】基于微信小程序的点餐系统的设计与实现

项目介绍 本课程演示的是一款基于微信小程序的点餐系统的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.…

作者头像 李华
网站建设 2026/5/30 16:05:09

YOLO26模型量化实战:INT8精度保持方案

YOLO26模型量化实战&#xff1a;INT8精度保持方案 YOLO系列模型持续进化&#xff0c;最新发布的YOLO26在检测精度、推理速度与多任务能力上实现了显著突破。但真正让工程师眼前一亮的&#xff0c;不是它又涨了几个mAP点&#xff0c;而是它在端侧部署场景中展现出的惊人兼容性—…

作者头像 李华
网站建设 2026/5/30 21:59:59

开发者必看:Qwen2.5-0.5B-Instruct镜像一键部署实操手册

开发者必看&#xff1a;Qwen2.5-0.5B-Instruct镜像一键部署实操手册 1. 为什么这个小模型值得你花5分钟试试&#xff1f; 你有没有遇到过这样的情况&#xff1a;想快速验证一个AI对话想法&#xff0c;却卡在环境配置上——装CUDA、配torch版本、下载几GB模型、调半天显存……最…

作者头像 李华