You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Anaconda在后台运行Python脚本?nohup命令失效求助

Anaconda环境下Python脚本后台运行失败的解决办法

先说说我的情况:我写了个简单的Python脚本test.py,代码如下:

import time
import logging
logging.basicConfig(filename='app.log', filemode='w', level=logging.DEBUG)
i=0
while i<100:
    i+=1
    logging.info(i)
    print(i)
    time.sleep(1)

本来想靠Anaconda让它在后台跑,试了nohup python -u test.py &——虽然本机Python已经关联了Anaconda环境,但脚本死活和终端绑定在一起:关终端就停,用exit关终端直接变黑卡着关不了,点X关闭终端也跟着停。求正确的后台运行姿势?

附我的conda信息:

$ conda info
active environment : None
conda version : 4.9.2
conda-build version : 3.20.5
python version : 3.8.5.final.0
virtual packages : __win=0=0 __archspec=1=x86_64
base environment : F:\Automation\Anaconda3 (read only)
channel URLs : https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
platform : win-64
user-agent : conda/4.9.2 requests/2.24.0 CPython/3.8.5 Windows/10 Windows/10.0.17763
administrator : False
netrc file : None
offline mode : False

我用的运行终端是Git,版本2.29.2.windows.3


解决办法

你这问题核心是Windows环境下Git Bash的nohup和Linux下表现不一样,而且Windows本身的后台进程管理逻辑和Linux有区别,给你几个亲测有效的方法:

方法1:用Anaconda Prompt + Windows原生start /B命令

这是最稳定的Windows本地方案,完全和终端解绑:

  1. 打开Anaconda Prompt(如果需要特定环境,先激活,比如conda activate myenv;没特殊需求直接用base环境就行)
  2. 切换到脚本所在文件夹:cd D:\your_script_path
  3. 执行后台启动命令:
start /B python test.py
  • 要是不想让输出占着控制台,直接把所有输出(包括错误)重定向到日志文件:
start /B python test.py > output.log 2>&1

这样脚本彻底在后台跑,关了Anaconda Prompt也不受影响。

方法2:Git Bash里用nohup配合disown断开关联

Git Bash的nohup默认还是会和终端绑定,得加一步断开关联:

  1. 先执行nohup python -u test.py &
  2. 马上输入disown -h %1(这里%1是刚才后台进程的job编号,不确定的话输jobs就能看到列表)
    做完这步再关Git Bash,脚本就会继续在后台运行了,不会跟着终端一起停。

方法3:指定conda环境后台启动

如果你的脚本需要特定的conda环境,直接把激活命令和启动命令合并就行:
在Anaconda Prompt里执行:

start /B cmd /c "conda activate myenv && python test.py > output.log 2>&1"

用cmd /c会执行完命令就关闭临时的cmd窗口,彻底后台运行;要是想留着窗口看输出,换成cmd /k就行。

几个小提醒

  • 别刚运行后台进程就用Git Bash的exit命令关窗口,容易卡黑屏,用disown之后再关就没问题。
  • 要停后台脚本的话,打开任务管理器,找到对应的python.exe进程结束就行。
  • 你的脚本里logging.basicConfig的filemode='w'是清空日志再写,要是长时间运行建议改成filemode='a'(追加模式),不然每次重启都会丢之前的日志。

内容的提问来源于stack exchange,提问作者Syed Afsahul Haque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:28:41