使用 tmux 让服务器训练任务在后台持续运行

在做深度学习训练时,我们常常会遇到这样的烦恼:通过 SSH 连接到服务器跑训练,结果一关电脑、断网或者退出终端,训练任务就跟着挂掉了。第二天打开电脑一看,进度全没,又得从头再来。

tmux 就是解决这个问题的神器。下面用四个步骤,带你完整走一遍"启动训练 → 后台挂起 → 第二天恢复查看"的完整流程。


目录

  • [0. 安装 tmux](#0. 安装 tmux)
  • [1. 使用 tmux 创建持久化会话](#1. 使用 tmux 创建持久化会话)
  • [2. 准备并启动训练任务](#2. 准备并启动训练任务)
  • [3. 将任务挂起至后台(分离会话)](#3. 将任务挂起至后台(分离会话))
  • [4. 重新查看训练进度(恢复会话)](#4. 重新查看训练进度(恢复会话))
  • [5. 回滚查看历史输出(查看之前刷过的日志)](#5. 回滚查看历史输出(查看之前刷过的日志))
  • 小结

0. 安装 tmux

在开始之前,先确认服务器上是否已经装了 tmux。在终端输入:

bash 复制代码
tmux -V

如果输出类似 tmux 3.2a 的版本号,就说明已经装好了,可以直接跳到下一步。如果提示 command not found,按下面对应的系统安装即可。

Ubuntu / Debian:

bash 复制代码
sudo apt update
sudo apt install tmux

没有 sudo 权限怎么办?

如果你在公司或学校的服务器上没有 sudo 权限,可以让管理员帮忙安装;或者用 conda 在用户目录下装一份,不需要任何系统权限:

bash 复制代码
conda install -c conda-forge tmux

装好后再跑一次 tmux -V 确认能正常调用,就可以进入正题了。

1. 使用 tmux 创建持久化会话

bash 复制代码
tmux new -s train

tmux 是一个终端复用工具 。这行命令创建了一个名为 train 的独立虚拟终端窗口。在这个窗口里运行的任何程序,即使你关闭了外部的连接工具,它也会在服务器后台继续运行。

💡 -s 是 session 的缩写,train 是会话名字,可以根据任务自定义,比如 train-bert、finetune 等等。

2. 准备并启动训练任务

bash 复制代码
conda activate your_env

python your_script.py

3. 将任务挂起至后台(分离会话)

text 复制代码
# 按 Ctrl+B 然后按 D 断开(detach)

这是 tmux 的快捷键操作。先按住键盘上的 Ctrl 和 B 键,松开后再按 D 键(Detach)。

这个操作会把你当前看到的终端界面"隐藏"到后台,退回到你最初登录服务器的界面。此时你可以安全地关闭 SSH 连接(关闭电脑回家或睡觉),那个训练程序依然会在服务器后台不知疲倦地运行。

4. 重新查看训练进度(恢复会话)

bash 复制代码
tmux attach -t train

当你第二天打开电脑,重新通过 SSH 连上服务器后,输入这行命令(attach 意思是附加),就能回到名为 train 的那个终端窗口,继续查看模型训练的实时日志和进度了。

💡 如果忘了会话名字,可以用 tmux ls 查看当前所有的 tmux 会话。

5. 回滚查看历史输出(查看之前刷过的日志)

恢复会话后,你可能发现想看的训练日志已经被刷到屏幕外了,普通的鼠标滚轮还滚不动------这是因为 tmux 接管了终端,需要进入它专属的模式才能回滚。

主要有两种方法:键盘模式和开启鼠标支持。

方法一:使用键盘(最通用,无需配置)

你需要进入 tmux 专属的复制模式 (Copy Mode):

  1. 进入回滚模式 :先按 Ctrl + B,松开后再按 [(左中括号)。

    此时你会看到右上角出现类似 [0/123] 的行号指示器。

  2. 上下滚动:

    • 使用键盘的 ↑ 和 ↓ 方向键逐行滚动。
    • 使用 Page Up 和 Page Down 键快速翻页。
  3. 退出回滚模式 :按 q 或 Esc 键,就能回到正常的终端输入状态。

方法二:开启鼠标滚轮(最方便,推荐)

如果你觉得按键盘太麻烦,习惯直接用鼠标滚轮,可以手动开启 tmux 的鼠标支持。

临时开启(只对当前会话有效):

  1. 按 Ctrl + B,松开后再按 :(冒号键,注意可能需要按住 Shift)。
  2. 此时底部会出现一个输入提示符,输入 set -g mouse on 然后回车。
  3. 现在你就可以直接用鼠标滚轮上下翻看日志了!

永久开启(以后每次都生效):

如果你希望以后所有的 tmux 会话都支持鼠标滚动,可以修改配置文件:

bash 复制代码
# 1. 在普通终端里追加配置
echo "set -g mouse on" >> ~/.tmux.conf

# 2. 让配置立即生效
tmux source-file ~/.tmux.conf

💡 进阶提示:增加回滚行数

tmux 默认只保存最近 2000 行左右的历史记录。对于深度学习训练来说,几万个 epoch 的日志很容易就会把历史记录刷掉。

建议你扩大历史记录容量:

bash 复制代码
echo "set -g history-limit 50000" >> ~/.tmux.conf
tmux source-file ~/.tmux.conf

这样 tmux 就会为你保留多达 5 万行的历史输出了。

小结

操作 命令
新建会话 tmux new -s <名字>
分离会话(挂到后台) Ctrl+B 然后按 D
查看所有会话 tmux ls
恢复会话 tmux attach -t <名字>
进入回滚模式 Ctrl+B 然后按 [,q 退出
开启鼠标滚轮(临时) Ctrl+B 然后输入 :set -g mouse on
关闭会话 在会话中输入 exit
相关推荐
学IT的周星星3 小时前
记忆系统:让 Agent 记住你是谁、上次聊到哪
运维·服务器·人工智能·windows·大模型·llm·agent
en.en..3 小时前
MRS/MSR 指令操作 xPSR 寄存器
linux·运维·服务器
Brilliantwxx3 小时前
【Linux】 自主shell编写巩固复习篇
linux·运维·服务器·开发语言
弯_弯4 小时前
FDE 的工程能力画像:数据接入、PoC 与可复用资产的落地口径
java·服务器·开发语言
anew___4 小时前
《从零手写操作系统 (49):虚拟内存进阶——Demand Paging、Swap与缺页异常处理》
linux·服务器·php
Android系统攻城狮4 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_parse_caps调用流程与实战(八十)
linux·运维·服务器·gstreamer音视频·音视频进阶
l1t4 小时前
DeepSeek总结的 DuckDB 2.0 文档新内容
服务器·网络·数据库
lwx9148525 小时前
Deepin操作系统
linux·服务器·网络
先知后行。5 小时前
进程间通信(IPC)
linux·运维·服务器
鬼手点金6 小时前
ReAct 循环
linux·服务器·前端·javascript·react.js·前端框架