在 Windows 上敲完 ollama run,窗口一关进程就没了,远程连着跑一半断开更是白跑。这篇不讲模型选哪个,只解决「让它在后台稳着」。下面按从简到繁的顺序给三套做法,再附一份掉线排查清单和常驻显存的取舍判断。
在 Windows 上敲完 ollama run,那个黑窗口一关,进程就跟着没了;远程连着服务器跑到一半网络断开,前面吐出来的内容也白等。这篇不讲模型怎么挑、参数怎么调,只解决一件事:让它在后台稳着跑,你关终端、切窗口、断远程都不影响。
下面按从简到繁给三套做法,再附一份掉线排查顺序和「模型要不要一直占着显存」的取舍判断。你先看清楚自己属于哪种场景,再决定花多少力气。
先搞清 ollama run 为什么一关窗口就死
ollama run 是个前台交互进程,终端窗口就是它的父进程。你点关闭,等于给这个进程发终止信号,模型本身没问题,是「托着它的那层壳」没了。所以别去怀疑模型装坏了,先分清你要保住的到底是服务还是那条命令。
- Ollama 服务
- 常驻后台、随开机启动的那个进程,负责守着本地端口,接收请求
- ollama run
- 一个前台客户端,连上服务后发请求并进入交互问答,窗口关了就断
判断方法很直接:打开任务管理器,看有没有 Ollama 相关的服务进程。有,说明服务本身活着,你要解的只是「怎么别用交互式 run」;没有,或者服务没自动启动,那先把服务这一层弄稳,再谈后台化。如果你只是自己随手问两句、用完就关,后台化其实没必要,反而多一层排查成本。
最省事:先确认服务在跑,再用 API 或客户端代替 run
Windows 版装好之后,通常会注册成一个后台服务并随开机启动。你到系统的服务列表里找 Ollama 相关项,把启动类型设成自动,然后手动重启一次让它生效。服务起来之后,你根本不需要 run 这个交互命令。
- 确认服务状态在服务列表里找到 Ollama 项,看它是否在运行;没运行就手动启动,并把启动类型改成自动,重启一次再确认。
- 验证端口在听本地发一个请求,能拿到返回就说明服务在工作。具体用哪个端口、怎么发,安装后一般有默认约定,拿不准就翻一遍官方说明或到站内部署相关页面核对。
- 换成非交互调用用 curl、Python 脚本,或者任何兼容 OpenAI 接口的客户端来发请求。这些都不依赖终端窗口,逻辑上就是后台在跑。
有个坑要提前知道:服务进程活着,不等于模型常驻显存。闲置一段时间后模型会被卸载,下一次请求要重新加载,首字会明显变慢。这是下一节要专门处理的事。
想让命令也常驻:计划任务 + 启动脚本的组合做法
如果你希望开机就自动把服务拉起来、甚至顺手做一次预热,可以用任务计划程序配一个脚本。核心思路是:脚本里只做「确保服务可用 + 发一次请求」,不要用交互式 run,否则任务会在后台挂住等输入,永远不结束。
- 写启动脚本建一个 .bat 或 .cmd,内容负责拉起服务并做一次预热请求。所有输出都重定向到日志文件,后面排查全靠它。
- 注册计划任务用任务计划程序新建任务,触发器设为开机,勾选「不管用户是否登录都运行」。这一步决定了你锁屏、注销之后它还活不活。
- 先别急着隐藏窗口第一次先让窗口可见,确认脚本能跑通。确认无误后再改成隐藏运行——隐藏之后报错也一并被吞掉,顺序反了会很难受。
远程连服务器跑的场景要特别注意:SSH 或远程桌面会话断开,挂在它下面的子进程通常一起走。想让它真正脱离会话,就得用系统级的服务或计划任务来托管,别指望「我以为它在后台」。另外,改完环境变量或配置文件必须重启服务,Windows 上不重启、只看文件,经常得到的是旧行为。
后台跑起来之后,还要决定模型要不要一直占着显存
后台通了,但每次第一句都慢,大概率不是网络问题,而是模型被闲置卸载了、请求进来才重新加载。Ollama 有闲置卸载机制,保活时长可以调。要不要调、调多久,是个取舍题而不是必选项。
- 一天里调用很密集、显卡显存又宽裕:把保活时间调长,让模型常驻,首字延迟更稳
- 只是偶尔问一句,同时还要开游戏或剪辑软件:让它闲置后自动卸载,把显存让出去
- 同一张卡要切着跑不同模型:别常驻,切换时重新加载反而更省心
- 显存本来就不够、加载偶尔失败:先解决显存够不够的问题,再谈常驻,顺序反了会白折腾
显存到底够不够、该选哪个量化档位,跟显卡型号和模型规模都相关,不是一个固定数字能答的。到站内部署测算页面按你的显卡和模型对一遍,再决定常驻策略。
按顺序排查:后台跑了但请求不通怎么查
「后台跑了但请求不通」有好几种原因,别一上来就重装。按下面的顺序逐步缩小范围,每一步只回答一个问题。
- 看服务进程和端口服务进程在不在?端口有没有被监听?这一层不过,后面都不用查。
- 本机发一次请求在同一台机器上发请求。能通,说明服务本身没问题,问题在网络可达性上。
- 换另一台机器再发如果本机能通、别的机器不通,基本就是只监听了本机地址,或者防火墙拦了端口。
- 查日志文件后台加隐藏窗口的组合最容易把报错吞掉,你重定向的日志文件就是主力证据。
还有一个常见误区:改完配置没重启服务,以为改动生效了,其实跑的还是旧参数。Windows 上遇到「明明改了却没变化」,先重启服务再怀疑别的。判断标准就一条:任何配置改动之后,先重启一次服务,再看行为是否变化。如果你在纠结用官方还是走中转,可以先到站内价格与模型资料库核对当时的数字和可用模型范围,再决定要不要折腾本地这套。
下一步想让本地这套跑得稳,除了后台化,还得知道你的机器和网络大概在什么水平。去速度测试页跑一遍,拿到自己环境的基线,再回头调保活时长和并发,心里就有数了。→常见问题
为什么我把命令行窗口关了,模型就停了?
因为那条 run 命令本身就是前台进程,窗口是它的父进程,关窗等于结束它。真正在后台守着端口的是 Ollama 服务,只要服务还在,你随时可以重新发请求。所以要么别关那个窗口,要么干脆不用 run,改走接口调用。
设了开机自启的任务,重启后还是连不上,先查什么?
先查任务是否真的以「不管用户是否登录」的身份跑起来了,再看服务进程有没有起、端口有没有被监听,最后才怀疑配置。很多人卡在任务跑在用户会话里,用户没登录自然不执行。把脚本输出重定向到文件,看日志比猜快得多。
后台常驻会不会一直占着显存不放?
默认不会一直占,闲置到一定时长后模型会被卸载,代价是下次调用要重新加载。你可以把保活时长调大让它常驻,但显存就被长期占用,同时跑别的吃显存程序会冲突。显存宽裕且调用频繁就常驻,否则保持默认更稳。