使用 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-bertfinetune 等等。

2. 准备并启动训练任务

bash 复制代码
conda activate your_env

python your_script.py

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

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

这是 tmux 的快捷键操作。先按住键盘上的 CtrlB 键,松开后再按 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 UpPage Down 键快速翻页。
  3. 退出回滚模式 :按 qEsc 键,就能回到正常的终端输入状态。

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

如果你觉得按键盘太麻烦,习惯直接用鼠标滚轮,可以手动开启 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
相关推荐
条俐开水喉5 小时前
高密度AI算力服务器机房U位动态调度管理方案
运维·服务器·人工智能
hyunbar5 小时前
高级 SQL 实战教程(华为云 DWS / PostgreSQL 版)
linux·服务器·数据库
雪度娃娃5 小时前
行为型设计模式——备忘录模式
服务器·c++·设计模式·备忘录模式
lljss20205 小时前
Arm GNU 工具链 命名规则
服务器·arm开发·gnu
KnowSafe5 小时前
如何用OpenSSL生成CSR文件?
服务器·https·ssl
快乐的哈士奇5 小时前
历史对话关联 RAG 上下文检索 — 内部技术介绍
服务器·数据库·oracle
土星云SaturnCloud5 小时前
32TOPS工业级算力+无风扇全密封!土星云SE110S-WA32边缘计算微服务器深度测评
服务器·人工智能·ai·边缘计算
宋浮檀s5 小时前
Linux后门持久化排查
linux·运维·服务器
诗句藏于尽头5 小时前
服务器入侵事件复盘:从发现到修复的完全指南
运维·服务器