使用 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
相关推荐
mN9B2uk172 小时前
大数据量高并发的数据库优化
服务器·数据库·oracle
土星云SaturnCloud2 小时前
边缘计算赋能智慧工地:从“看得见“到“管得住“的智能化升级
服务器·人工智能·ai·边缘计算
zhangfeng11333 小时前
ps aux讲解,结合国家超算中心 hpc apptainer
linux·服务器·网络
无限进步_3 小时前
从零实现一个迷你Shell——深入理解Linux命令行解释器
linux·运维·服务器·开发语言·c++·chrome
阿标在干嘛3 小时前
政策平台的推送系统:消息队列、定时任务、AB测试的工程实践
服务器·数据库·ab测试
happymaker06264 小时前
Linux常见命令总结
linux·运维·服务器
开源量化GO4 小时前
期货 K 线算信号 tick 级止损:天勤双序列 wait_update 触发规则
linux·运维·服务器·python
m0_738120724 小时前
HVV应急溯源基础——Linux 系统安全加固配置指南(一)
linux·运维·服务器·安全·网络安全·系统安全
github_czy4 小时前
更加优雅的类型检查与传参---mcp源码分析
java·服务器·开发语言
vortex55 小时前
Linux日志轮转管理:logrotate 完全指南
linux·运维·服务器