Skip to content

tmux 终端复用

tmux 是常用的终端复用工具。它可以在一个 SSH 连接中创建多个会话、窗口和窗格,并且在网络断开或本地终端关闭后继续保留远程会话。对于需要长时间编译、数据处理、提交作业或查看日志的任务,建议优先使用 tmux。

适用场景

  • 网络不稳定,担心 SSH 断开后操作中断。
  • 需要同时查看多个终端输出,例如编辑脚本、提交作业、查看日志。
  • 需要把正在运行的终端会话临时放到后台,之后再重新接入。

使用建议

登录平台后,建议先按任务要求申请或进入计算节点,再在节点中启动 tmux。这样 tmux 会话和正在运行的命令都会保留在对应节点上。

常用命令

命令说明
tmux启动一个默认会话
tmux new -s <会话名>新建并命名会话
tmux ls查看已有会话
tmux attach -t <会话名或编号>重新接入指定会话
tmux a -t <会话名或编号>attach 的简写形式
tmux detach分离当前会话
tmux rename-session -t <旧名称> <新名称>重命名会话
tmux kill-session -t <会话名或编号>结束指定会话

常用快捷键

tmux 的快捷键通常先按 Ctrl+b,松开后再按第二个键。下面表格中的 Ctrl+b, d 表示先按 Ctrl+b,再按 d

快捷键说明
Ctrl+b, d分离当前会话,回到普通终端
Ctrl+b, %左右分屏
Ctrl+b, "上下分屏
Ctrl+b, 方向键在窗格之间切换
Ctrl+b, c新建窗口
Ctrl+b, n切换到下一个窗口
Ctrl+b, p切换到上一个窗口
Ctrl+b, 0-9切换到指定编号窗口
Ctrl+b, w从列表中选择窗口
Ctrl+b, ,重命名当前窗口
Ctrl+b, &关闭当前窗口
Ctrl+b, x关闭当前窗格

基本流程

1. 启动 tmux

在登录节点或已申请的计算节点中执行:

bash
tmux

也可以直接创建一个带名称的会话,便于之后重新接入:

bash
tmux new -s work

启动后底部会出现绿色状态栏,表示已经进入 tmux 会话。

启动 tmux 后的终端界面

2. 按需要分屏

在 tmux 内可以使用命令或快捷键分屏。

bash
tmux split-window      # 上下分屏
tmux split-window -h   # 左右分屏

也可以使用快捷键:

  • Ctrl+b, ":上下分屏
  • Ctrl+b, %:左右分屏

tmux 分屏后的终端界面

3. 分离会话,让任务继续运行

在 tmux 中执行编译、脚本或作业监控时,如果需要暂时退出终端,可以按:

text
Ctrl+b, d

分离后会回到普通 shell,但 tmux 会话仍在后台保留。只要节点和会话未被清理,tmux 中的命令不会因为本地终端关闭而立即中断。

4. 查看已有会话

重新登录后,可以查看当前用户已有的 tmux 会话:

bash
tmux ls

输出中最左侧的 01 等是会话编号,也可以使用会话名称重新接入。

查看 tmux 会话列表

5. 重新接入会话

使用会话编号或名称重新进入:

bash
tmux attach -t 1

简写形式:

bash
tmux a -t 1

重新接入 tmux 会话

推荐用法

为任务命名会话

建议给不同任务使用不同的会话名,方便区分:

bash
tmux new -s train
tmux new -s build
tmux new -s analysis

重新接入时直接使用名称:

bash
tmux a -t train

在 tmux 中查看作业日志

提交作业后,可以在 tmux 中持续查看日志:

bash
tail -f job.out

需要离开时按 Ctrl+b, d 分离;下次登录后再用 tmux lstmux a -t <会话名> 找回。

常见问题

关闭本地终端后任务一定不会中断吗?

如果命令运行在 tmux 会话中,且远程节点没有重启、会话没有被清理,通常不会因为本地 SSH 断开而中断。若任务本身依赖调度系统,仍建议按平台要求通过调度器提交作业。

找不到之前的会话怎么办?

先确认是否登录到了同一台节点。tmux 会话保存在创建它的节点上,如果之前是在某个计算节点中启动的 tmux,重新登录到其他节点时可能看不到。

如何退出 tmux?

如果只是临时离开,用 Ctrl+b, d 分离。
如果确认不再需要当前会话,可以在 tmux 中输入:

bash
exit

或在普通终端中结束指定会话:

bash
tmux kill-session -t <会话名或编>

参考资料

Copyright 2021 All Rights Reserved 生物设计中心 版权所有