基因学苑生物云平台使用说明

2026 版 · 从登录、传文件到软件环境与 AI 工具

八、Tmux不间断会话

一般我们做数据分析,通常是在自己电脑上远程登录服务器,通过nohup运行脚本让任务保持非挂起状态运行,如果忘记nohup之后使用disown将任务切换为nohup状态,但如果每条命令都使用nohup实在是比较麻烦。目前强烈推荐在服务器命令行使用tmux工具。

1 为什么要使用tmux

tmux(terminal multiplexer)是Linux上的终端复用神器,可从一个屏幕上管理多个终端。使用tmux,用户可以连接或断开会话,而保持终端在后台运行。也就是登录Linux之后,开始tmux,之后所有的操作都在tmux中完成,这样即使突然掉线了,所有的任务都还在tmux之中。

tmux的结构包括会话(session)、窗口(window)、窗格(pane)三部分,会话实质是伪终端的集合,每个窗格表示一个伪终端,多个窗格展现在一个屏幕上,这一屏幕就叫窗口。tmux的操作主要包括对会话、窗口、窗格的创建、关闭、重命名、连接、分离、选择等等。

  • 网络不稳定,经常掉线,导致任务经常中断;
  • 使用网络下载数据,例如wget或者prefetch后台下载比较大的数据;
  • 下班后,退出ssh登录,关机走人,任务忘了切换到nohup模式;
  • 需要使用nohup的场景。

其实使用tmux并不复杂,虽然tmux有非常多的功能,但是我们主要就是掌握一些基本快捷键就行。

2 如何使用tmux

在命令行直接输入tmux,就会自动打开一个新窗口,这个就是tmux的虚拟终端,可以说是伪终端。注意最下面多了一条绿色的状态栏,表示当前一个新终端里。接下来就可以在这个终端中运行任务了。这个任务就一直待在这个虚拟终端中,即使突然掉线了,还可以恢复任务,可以继续运行。

说明配图
操作示意图(若无法加载,请参考飞书原版文档)

3 常用快捷键

使用tmux需要经常使用快捷键,其中最常用的就是ctrl+b,因为Linux shell下很多快捷键都被占用了,只能这样操作了,每次先按一下ctrl+b,在使用对应的快捷键。注意ctrl+b是在tmux窗口中使用,在原始的shell命令行下不管用。下面列出一些最常用的快捷操作:

ctrl+b ?  :         显示快捷键帮助
ctrl+b d   :        脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
ctrl+b 空格键 :     采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示
ctrl+b !    :        把当前窗口变为新窗口
ctrl+b "    :       横向向分隔窗口
ctrl+b 上下键:      上一个及下一个分隔窗口
ctrl+b &  :         确认后退出当前tmux
ctrl+b c     :      创建新窗口
ctrl+b n     :      选择下一个窗口
ctrl+b l     :      最后使用的窗口
ctrl+b p     :      选择前一个窗口
ctrl+b w     :      以菜单方式显示及选择窗口
ctrl+b s      :     以菜单方式显示和选择会话。
ctrl+b t      :     显示时钟。然后按enter键后就会恢复到shell终端状态

4 tmux案例

接下来我们演示一条,使用tmux下载生物数据的案例。

#1  新建会话,命名为wget
tmux new -s wget

# 2 运行命令
wget -c ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/swissprot.gz

# 3 按ctrl+b,然后字母d,退出会话,任务仍在运行
$ tmux new -s wget
[detached]

#4 tmux ls查看任务
$ tmux ls
wget: 1 windows (created Wed Jul 24 10:22:34 2019) [114x26]

#5 重新进入wget终端,第一个参数a也可以写成attach,任务正在运行
tmux a -t wget

#6 关闭会话任务,如果在会话中使用ctrl + d,或者exit,就会在退出会话,也关闭了该会话
# tmux ls查看会话
$ tmux ls

#7 kill-session杀死会话,每个会话成为一个session
$ tmux kill-session -t wget

#8 关闭所有会话
$ tmux kill-server

5 多窗口管理

如果一次创建了多个会话,tmux还可以对这些窗口进行管理,其实这个xshell自带这个功能,使用xshell更加方便。下面列出一些快捷键,感兴趣的可以尝试一下,首先还是在窗口中按ctrl+b,然后使用对应的快捷键。

ctrl+b ” :  将当前面板平分为上下两块
ctrl+b % :  将当前面板平分为左右两块
ctrl+b x :  关闭当前面板
ctrl+b ! : 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
ctrl+b  Ctrl+方向键:以1个单元格为单位移动边缘以调整当前面板大小

6 更多配置

tmux的配置都在\~/.tmux.conf文件中,如果没有这个文件,可以自己提前创建一个。下面给出以下常用的配置。

# 鼠标支持
  set -g mouse on

  # 修改前缀键为Ctrl+a
  set -g prefix C-a
  unbind C-b
  bind C-a send-prefix

  # 窗口和面板编号从1开始
  set -g base-index 1
  set -g pane-base-index 1

  # 256色支持
  set -g default-terminal "screen-256color"

  # 状态栏
  set -g status-bg black
  set -g status-fg yellow
  set -g status-left "#[fg=green]#H "
  set -g status-right "#[fg=white]%H:%M %Y-%m-%d"

  # 面板切换
  bind h select-pane -L
  bind j select-pane -D
  bind k select-pane -U
  bind l select-pane -R

  # 调整面板大小
  bind -r H resize-pane -L 5
  bind -r J resize-pane -D 5
  bind -r K resize-pane -U 5
  bind -r L resize-pane -R 5

  # 重新加载配置
  bind r source-file ~/.tmux.conf \; display "Reloaded!"

  # 复制模式vi键位
  set-window-option -g mode-keys vi
  bind-key -T copy-mode-vi 'v' send -X begin-selection
  bind-key -T copy-mode-vi 'y' send -X copy-selection

  # 启用剪贴板共享
  set-option -g set-clipboard on

修改完配置需要重新加载配置文件才能起作用。

# 重新加载配置 
tmux source-file ~/.tmux.conf

tmux还有更多好用好玩的功能,可以查看tmux文档。