tmux_for_windows windows上面安装 git bash 2026年 正是专门为了解决“SSH 掉线后还能继续原来的会话”这个问题而设计的工具

tmux_for_windows

tmux是一个开源工具,用于在一个终端窗口中运行多个终端会话。本工具从msys2里提取,可以在Git for Windows的Git Bash (MingW64)下正常使用。

蘭雅sRGB 龙芯小本服务器 | https://262235.xyz

##tmux(以及 screen)正是专门为了解决“SSH 掉线后还能继续原来的会话”这个问题而设计的工具。

简单来说:

工具SSH 掉线后还能连上原来的会话吗?说明
普通 bash / zsh不能会话结束,进程收到 SIGHUP 信号,通常被杀死
tmux会话独立于 SSH 连接存在,掉线后可以随时重新 attach
screen和 tmux 功能几乎一样,但 tmux 现在更流行、功能更强
zellij更现代的替代品,但普及度不如 tmux

tmux 的典型用法(SSH 掉线后重连)

  1. SSH 掉线了也没关系(关浏览器、断网、电脑关机都行)

如果忘记会话名字了,可以先列出所有 tmux 会话

tmux ls# 看到类似:# mytrain: 1 windows (created Tue Feb 25 19:45:12 2026) [80x24]

然后再 attach 上去。

过一会儿重新 SSH 登录服务器,然后重新连上原来的 tmux 会话

tmux attach -t mytrain # 或者简写 tmux a -t mytrain 

连上后,你会看到程序还在跑,输出还在继续,窗口布局、进程状态全部保留。

在 tmux 里面跑你的程序(比如训练脚本)

python standalone_warmup_with_wandb.py ... 

登录服务器后,先启动一个 tmux 会话

tmux new -s mytrain # -s 后面是会话名字,随便起

常用快捷键(在 tmux 里按 Ctrl+b 再按下面键)

  • d → detach(脱离会话,但不关闭,程序继续跑)
  • c → 新建窗口
  • n / p → 切换下一个/上一个窗口
  • , → 重命名当前窗口
  • w → 窗口列表(鼠标或键盘选)
  • Ctrl+b ? → 查看所有快捷键帮助

小贴士

  • 更极端的场景(怕 tmux 本身被杀)
    可以再套一层 nohup 或用 systemd 服务,但 99% 的情况 tmux 就够用了。

如果服务器上没有 tmux,先安装:

# Ubuntu/Debiansudoapt update &&sudoaptinstall tmux -y # CentOS/RHELsudo yum install tmux -y 

如果你经常用,建议把 tmux 配置得更舒服一点(~/.tmux.conf)
常见优化:

# 改前缀键为 Ctrl+a(很多人觉得比 Ctrl+b 好按)set -g prefix C-a unbind C-b bind C-a send-prefix # 鼠标支持(可选)set -g mouse on # 窗口从 1 开始编号(更直观)set -g base-index 1 setw -g pane-base-index 1

总结一句话:

tmux 就是为“SSH 掉线后还能连回原来的程序”而生的,用起来非常稳。
只要你先 tmux new -s xxx 再跑训练,掉线后再 tmux a -t xxx 就能无缝接上。强烈建议你现在就试一次。

tmux在windows系统下安装使用

https://youtu.be/zSUwczhdtKI

https://github.com/yanggg1133/tmux_for_windows/

首先你要保证已经安装有 Git for Windows

下载地址 https://git-scm.com/download/win

关闭

tmux kill-session -t 会话名

tmux for Git Bash (MingW64) 安装包使用

  • 下载 tmux_for_git-bash.zip
  • 释放文件到 D:\Git\usr
  • ** 默认是C:\Program Files\Git\usr**
  • 实际可执行文件在 D:\Git\usr\bin\tmux.exe

** 默认是C:\Program Files\Git\usr\bin**

tmux 使用

  • Windows 开始菜单 运行 D:\Git\git-bash.exe
  • 命令行输入 tmux

git-bash环境下命令行安装

git clone https://github.com/hongwenjun/tmux_for_windows.git cd tmux_for_windows/ unzip -x tmux_for_git-bash.zip -d /usr 

原始的 tmux for msys2 的安装包,不需要下载

# tmux-2.7-1 旧版本 tmux_for_windows/tmux_271 a31b2636ff7540ec11a38ac4d9c95dc9 libevent-2.1.8-1-x86_64.pkg.tar.xz a7ac01f4ccef1ecedf9ef346fb2c818e tmux-2.7-1-x86_64.pkg.tar.xz ba061b3687f77dde53658a95793e952e tmux_for_git-bash.zip # 旧版本 # tmux-3.1-c1 新版本 tmux_for_windows/tmux_311 9abfa52145cf5a7e591847f58a5253e3 libevent-2.1.12-2-x86_64.pkg.tar.zst b433f58e1267f5582de43d2e9d78d82d tmux-3.1.c-1-x86_64.pkg.tar.zst 

tmux 启用鼠标操作

.tmux.conf 设定

cd ~ vim ~/.tmux.conf # # https://www.youtube.com/watch?v=xTplsyQaGFs # tmux 启用鼠标操作 setw -g mouse set-option -g history-limit 20000 set-option -g mouse on bind -n WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M bind -n WheelDownPane select-pane -t= \; send-keys -M 

fish_for_git-bash

Fish 是"the friendly interactive shell"的简称,最大特点就是方便易用。很多其他 Shell 需要配置才有的功能,Fish 默认提供,不需要任何配置。

fish for Git Bash (MingW64) 安装包使用

fish 使用教程

  • http://fishshell.com/docs/current/tutorial.html

原始的 fish for msys2 的安装包,不需要下载

Path: tmux_for_windows/fish_312 9cb0219a335d2b54c388cbf25c2ea456 bc-1.07.1-2-x86_64.pkg.tar.xz 4fd6c824c616709966167fdc5f1a5195 fish-3.1.2-1-x86_64.pkg.tar.zst b882faf644ccd4770f7c3002e1dc6d71 groff-1.22.4-1-x86_64.pkg.tar.xz 0d78c572a6cd9f0bf88e2b0ceedf62e6 libpcre2_16-10.35-1-x86_64.pkg.tar.zst f3d45b93b85a9d57c978224bd8111c09 libpipeline-1.5.2-1-x86_64.pkg.tar.xz 4dd5d447bb0e160502afe95a1bafe044 man-db-2.9.3-1-x86_64.pkg.tar.zst 

把fish设为交互式shell

如果不将fish设为默认shell,就能照常运行Bash的初始化脚本。这能够保证用户当前的环境变量不受影响并且在fish中也能使用,因为fish是作为Bash的子进程运行的。下面是几种只把fish设为交互式shell的方法。

通过.bashrc启动fish

保持默认shell为Bash不变,然后添加一行exec fish到合适的Bash配置文件中,比如.bashrc。在这种方法中,Bash会正常执行/etc/profile和/etc/profile.d中的所有配置文件。相对于之后几种方法,这种是最通用的,因为这种方法在本机计算机和SSH远程计算机上都能使用。

使用终端复用器的选项

要将fish设为tmux启动的默认shell,在~/.tmux.conf中加入这行:

set-option -g default-shell “/usr/bin/fish”

关闭问候语

默认情况下,每次启动fish,fish都会打印问候语。要关闭问候语,可以在fish中运行:

set -U fish_greeting

网页界面

通过下面命令即可用浏览器打开fish的配置页面。

fish_config

你现在遇到的这个提示 sessions should be nested with care, unset $TMUX to force,是因为你已经在一个 tmux 会话里,又尝试启动新的 tmux 会话(tmux 默认不推荐嵌套会话),所以给出了这个警告。

问题分析与解决方法

1. 先理解核心原因

$TMUX 是一个环境变量,当你处于 tmux 会话中时,这个变量会被自动设置(指向当前 tmux 会话的套接字)。tmux 检测到这个变量存在,就会阻止你直接启动新的嵌套会话,避免使用混乱。

2. 分场景解决
场景 A:你想退出当前 tmux 会话,重新启动

这是最常见的正常使用场景,步骤如下:

  • 先退出当前 tmux 会话:在 tmux 窗口中输入 exit 并回车,回到原生的终端界面。
  • 再重新启动 tmux:执行 tmux.exe,此时就能正常创建新的 tmux 会话,不会再出现警告。
场景 B:你确实需要嵌套 tmux 会话(不推荐,仅特殊场景用)

如果有特殊需求必须嵌套(比如远程服务器里的 tmux 套本地 tmux),可以强制取消 $TMUX 变量后启动:

# 临时取消 $TMUX 变量,强制启动嵌套会话unset TMUX && tmux.exe 

⚠️ 注意:嵌套会话会导致快捷键、窗格管理混乱(比如前缀键会被多层 tmux 拦截),非必要不建议这么做。

场景 C:检查是否误进入 tmux(确认当前状态)

如果你不确定自己是否在 tmux 里,可以执行以下命令验证:

# 查看 $TMUX 变量是否存在echo$TMUX# 如果输出非空(比如类似 /tmp/tmux-1000/default,5678,0),说明当前在 tmux 会话中# 如果输出为空,说明在原生终端

补充:tmux 基础使用小技巧

避免后续再遇到类似问题,记住几个常用操作:

  • 新建会话:tmux new -s 会话名(比如 tmux new -s mysession,方便管理多个会话)
  • 列出所有会话:tmux ls
  • 分离会话(保留会话后台运行):按 前缀键(Ctrl+b) + d
  • 重新连接会话:tmux attach -t 会话名(比如 tmux attach -t mysession
  • 关闭会话:在会话中输入 exittmux kill-session -t 会话名

总结

  1. 核心原因:当前终端已处于 tmux 会话中($TMUX 变量存在),tmux 阻止嵌套启动新会话。
  2. 优先解决方案:执行 exit 退出当前 tmux 会话,再重新运行 tmux.exe
  3. 特殊场景:必须嵌套时用 unset TMUX && tmux.exe 强制启动(不推荐)。

你提供的这段 tmux 配置整体思路是对的(启用鼠标、调整历史行数、绑定滚轮操作),但存在两处关键语法错误,会导致 tmux 解析失败(也就是你之前遇到的服务器退出、命令报错问题),我先帮你修正,再详细解释问题和原因。

第一步:修正后的正确配置

# tmux 启用鼠标操作(兼容不同 tmux 版本) setw -g mouse on # 旧版 tmux 窗口级鼠标配置(补全缺失的 on) set-option -g history-limit 20000# 调整滚动历史行数(正确) set-option -g mouse on # 新版 tmux 全局鼠标配置(正确)# 绑定鼠标滚轮上下滚动(修正语法错误,适配 tmux 滚轮事件)bind -n WheelUpPane select-pane -t=\; copy-mode -e \; send-keys -M bind -n WheelDownPane select-pane -t=\; send-keys -M 

第二步:你的配置中的核心问题分析

问题 1:setw -g mouse 语法不完整(最关键)
  • 错误写法:setw -g mouse
  • 问题原因:tmux 的 mouse 选项是布尔型(开/关),必须指定 onoff,只写 mouse 会被 tmux 判定为“未知命令”,直接导致配置解析失败。
  • 修正:setw -g mouse on(补全 on,明确开启窗口级鼠标)。
问题 2:WheelDownPane 绑定逻辑无错误,但需注意版本兼容(非语法错,优化点)

你的 bind -n WheelDownPane 写法语法上没问题,但补充说明:

  • send-keys -M 是 tmux 用来传递鼠标事件的指令,滚轮向下滚动时不需要进入 copy-mode(向上需要),所以你的写法是合理的;
  • 部分新版 tmux 中 select-pane -t= 可以简化为 select-pane,效果一致,不影响使用。

第三步:配置解释(帮你理解每一行的作用)

配置行作用说明
setw -g mouse on针对 tmux 2.1 及以下版本,开启窗口级鼠标支持(选窗格、调整大小等)
set-option -g history-limit 20000将 tmux 终端的滚动历史行数从默认(约2000)提升到20000,能滚动看更多历史输出
set-option -g mouse on针对 tmux 2.2+ 版本,开启全局鼠标支持(新版推荐写法,覆盖窗口/会话级)
bind -n WheelUpPane ...绑定鼠标滚轮向上:选中当前窗格 → 进入复制模式 → 触发向上滚动事件
bind -n WheelDownPane ...绑定鼠标滚轮向下:选中当前窗格 → 触发向下滚动事件(无需复制模式)

第四步:验证配置是否生效

修复后按以下步骤验证,确保无报错:

  1. 保存修正后的配置到 /c/Users/Administrator/.tmux.conf
  2. 验证效果:
    • 鼠标能点击切换窗格、拖动调整窗格大小;
    • 滚轮能上下滚动查看终端历史输出;
    • 无任何 unknown commandserver exited unexpectedly 报错。

重新加载配置并启动 tmux:

tmux source /c/Users/Administrator/.tmux.conf tmux.exe 

先杀掉可能崩溃的 tmux 进程:

tmux kill-server 

总结

  1. 核心错误:setw -g mouse 缺少 on,导致 tmux 解析配置时识别为无效命令,是服务器崩溃的主要原因;
  2. 其他要点:你的滚轮绑定逻辑正确,仅需补全鼠标选项的 on 即可正常使用;
  3. 关键验证:修复后执行 tmux kill-server + tmux source 配置文件 + tmux.exe,无报错且鼠标/滚轮功能正常即为配置生效。

如果启动后还有小问题(比如滚轮滚动不灵敏),可以告诉我你的 tmux 版本(执行 tmux -V 查看),我再帮你微调适配版本的配置。

你现在遇到的这个错误包含两个核心问题:一是 [server exited unexpectedly] 说明 tmux 服务器意外退出,二是 usage: send-keys [-FH1MRX] [-N repeat-count] [-t target-pane] key 提示你使用 send-keys 命令时格式错误,这两个问题通常是因为 .tmux.conf 配置文件里的 send-keys 命令写法不合法,导致 tmux 启动时解析失败、服务器崩溃。

问题分析与解决步骤

1. 先定位核心原因

send-keys 是 tmux 里用于向指定窗格发送按键/命令的指令,它有严格的语法要求:

  • 必须指定 目标窗格(可选)要发送的键/命令(必选)
  • 不能有多余的字符、错位的参数,也不能缺少核心的“要发送的内容”

你的错误就是配置文件中某一行 send-keys 命令的参数/格式写错了,tmux 启动时解析失败,直接导致服务器意外退出,并抛出用法提示。

2. 具体解决步骤
步骤 1:临时跳过配置文件,验证问题根源

先启动不加载配置的 tmux,确认是配置文件的问题:

# 启动 tmux 但不加载 .tmux.conf,验证是否能正常运行 tmux -f /dev/null new-session 

如果能正常进入 tmux 会话,说明确实是 .tmux.conf 里的错误配置导致的问题;如果还是报错,再检查系统环境,但99%的情况都是配置文件的问题。

步骤 2:检查并修复 .tmux.conf 中的 send-keys 命令

打开你的配置文件,找到所有包含 send-keys 的行,按正确语法修正:

# 编辑配置文件vim /c/Users/Administrator/.tmux.conf 
常见错误示例 & 修正方案
错误写法(导致崩溃)正确写法(示例)说明
send-keys(无任何参数)send-keys "ls -l"(发送命令)必须指定要发送的内容
send-keys -t 1(缺内容)send-keys -t 1 "cd /tmp"(指定窗格+内容)参数不完整,缺核心的key
send-keys "echo hello" -N(参数错位)send-keys -N 2 "echo hello"(参数在前)参数要写在内容前面
正确的 send-keys 用法示例(可参考)

如果你的配置里想绑定快捷键并发送命令,正确写法比如:

# 示例1:绑定 F5 键,向当前窗格发送 "clear && ls" 并回车bind F5 send-keys "clear && ls" C-m # 示例2:新建窗格后,自动发送 cd 命令到新窗格bind -n C-s split-window -v \; send-keys -t bottom "cd /c/Users/Administrator" C-m # 示例3:重复发送 2 次 "hello" 到编号为 1 的窗格 send-keys -N 2 -t 1"hello"

⚠️ 关键:C-m 代表“回车”,如果想让发送的命令自动执行,必须加这个;所有参数(-N/-t等)要放在“要发送的内容”前面。

步骤 3:保存并验证修复
  • 保存配置文件:vim 中按 Esc → 输入 :wq 回车。

重新加载配置并启动 tmux:

# 先杀掉崩溃的 tmux 服务器 tmux kill-server # 重新加载配置 tmux source /c/Users/Administrator/.tmux.conf # 启动 tmux tmux.exe 

如果能正常进入 tmux 会话,说明配置已修复;如果还有报错,继续检查配置文件中其他 send-keys 行,确保没有语法错误。

3. 补充:如果找不到 send-keys 错误行

如果不确定哪一行错了,可以清空配置文件,逐行添加配置并测试,定位错误行:

# 先备份原配置cp /c/Users/Administrator/.tmux.conf /c/Users/Administrator/.tmux.conf.bak # 清空配置文件echo""> /c/Users/Administrator/.tmux.conf # 启动 tmux,确认能正常运行 tmux.exe 

然后逐行把备份的配置加回去,每加一行就执行 tmux source 配置文件 测试,直到出现报错,就能精准定位错误的 send-keys 行。

总结

  1. 核心原因:.tmux.confsend-keys 命令语法错误(缺参数/参数错位/无发送内容),导致 tmux 解析失败、服务器意外退出。
  2. 修复关键:检查配置文件中所有 send-keys 行,按 send-keys [参数] 要发送的内容 格式修正,确保参数完整、顺序正确。
  3. 验证方法:先通过 tmux -f /dev/null 确认 tmux 本身可用,再修复配置文件,重启 tmux 验证是否正常运行。

Read more

如何快速搭建AI写作助手:5个步骤完成智能小说创作系统

如何快速搭建AI写作助手:5个步骤完成智能小说创作系统 【免费下载链接】AI_NovelGenerator使用ai生成多章节的长篇小说,自动衔接上下文、伏笔 项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator 还在为小说创作而烦恼?想要一个能够自动生成长篇故事的AI创作伙伴吗?今天为您详细介绍AI_NovelGenerator——一款功能强大的开源AI小说生成工具,能够自动衔接上下文、埋设伏笔,让您的创作效率实现质的飞跃!无论您是网文作者、文学爱好者还是内容创作者,这款智能创作系统都能成为您最得力的创作助手。 🎯 项目核心价值与亮点 AI_NovelGenerator是一款基于人工智能技术的长篇小说自动生成系统,通过智能分析剧情发展、角色关系和世界观设定,能够创作出情节连贯、人物鲜活的多章节文学作品。 核心优势: * 自动上下文衔接,确保故事连贯性 * 智能伏笔埋设,增强情节吸引力 * 多章节自动生成,支持长篇创作 * 角色关系管理,构建完整人物网络 🚀 快速入门指南 环境准备与检

By Ne0inhk

AI绘画报错

提示输出验证失败:CheckpointLoaderSimple: - 值不在列表中:ckpt_name: 'v1-5-pruned-emaonly-fp16.safetensors' 不在 ['anything-v5-PrtRE.safetensors'] 中 模型文件夹里面没模型 这是官方链接:v1-5-pruned-emaonly.safetensors https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main 点击同一行的小下载箭头。然后把文件放在:models/checkpoints文件夹里 你还需要标准的VAE文件,也就是:vae-ft-mse-840000-ema-pruned.safetensors https://huggingface.co/stabilityai/sd-vae-ft-mse-original/tree/main 这个文件放在:models/vae文件夹里 现在你已经拥有运行所需的一切了。慢慢来。你最初生成的图片会很糟糕。但是继续尝试,很快你就能得到很棒的结果。

By Ne0inhk
让工作效率翻倍的终极神器之被工具定义的编程时代(VS Code + GitHub Copilot + JetBrains全家桶)

让工作效率翻倍的终极神器之被工具定义的编程时代(VS Code + GitHub Copilot + JetBrains全家桶)

目录 * 一、引言:被工具定义的编程时代 * 二、背景:传统开发模式的效率瓶颈 * 2.1 认知负荷过载 * 2.2 工具链断层 * 三、效率翻倍工具链深度解析 * 3.1 智能代码编辑器:从打字机到智能助手 * 3.2 版本控制大师:Git的隐藏技能 * 3.3 自动化脚本:解放生产力的魔法 * 3.4 协作平台:从信息孤岛到知识网络 * 四、工具链选型方法论 * 4.1 效率评估模型 * 4.2 定制化策略 * 五、总结:工具是能力的延伸 一、引言:被工具定义的编程时代 在GitHub Copilot单月生成代码量突破10亿行的今天,开发者早已告别“记事本+命令行”

By Ne0inhk
2026年高校AIGC检测新规解读:AI率多少算合格?

2026年高校AIGC检测新规解读:AI率多少算合格?

2026年高校AIGC检测新规解读:AI率多少算合格? 从2024年知网正式上线AIGC检测功能开始,短短两年时间,"AI率"已经从一个新鲜名词变成了每个毕业生必须面对的硬性指标。2026年,各高校的AIGC检测政策进一步收紧和细化,要求也越来越明确。 那么,2026年AI率到底多少才算合格?不同学校的标准差别大吗?不合格会面临什么后果?本文将对这些问题进行深入解读。 一、AIGC检测已成为毕业论文审查的标配 回顾AIGC检测在高校中的普及历程,可以用"指数级扩散"来形容: * 2024年:知网上线AIGC检测功能,少数985/211院校开始试点,大部分学校处于观望状态 * 2025年:超过60%的本科院校和80%的研究生培养单位将AIGC检测纳入论文审查流程 * 2026年:AIGC检测基本实现全覆盖,包括专科院校在内的绝大部分高等教育机构都已建立相关制度 这一进程的背后,是教育部在2025年初发布的《关于加强高等学校学位论文学术诚信管理的指导意见》,其中明确提到"鼓励各高校引入人工智能生成内容检测机制,将AIGC检测作为论文质量保障的重要环节"。 虽然教育部没

By Ne0inhk