一 概述

由于训练一般都是在远程的Linux上,如果本地网络出现波动救护导致断开与远程服务器的连接,假设这个时候训练是在前台执行的,那么训练一般都会直接因为会话的断开而终止。

命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session)

会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。

一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。

为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。

而Tmux的出现,能够使得在窗口断开之后会话仍不受影响。

二 安装

如果root权限,那么安装很方便:

# Ubuntu 或 Debian
sudo apt-get install tmux

# CentOS 或 Fedora
sudo yum install tmux

# Mac
brew install tmux

如果没有管理员权限,其实也没关系,可以使用编译的方式进行安装

tmux的github地址为: https://github.com/tmux/tmux

或从AheadAI的公共资源站上直接下载:

wget https://mirrors.aheadai.cn/pkgs/tmux-3.5a.tar.gz
tar -zxvf tmux-3.5a.tar.gz
cd tmux-3.5a
./configure --prefix=$HOME/tmux # 这里写的是tmux的安装路径,可以根据自己的情况进行修改
make && make install
cd $HOME/tmux/bin
export PATH=$(pwd):$PATH # 将tmux的路径添加至环境变量PATH中
# 或者将其写入到bashrc文件中
echo "export PATH=$(pwd):\$PATH" >> ~/.bashrc

如果报错说:

configure: error: "libevent not found"

那么需要联系root管理员安装libevent,注意,需要安装的是dev版本

# Ubuntu
apt install libevent-dev
# Centos
yum install libevent-devel

报错:

configure: error: "yacc not found"
apt-get install bison

configure: error: "curses not found"
apt-get install ncurses-dev

命令手册

  1. 在终端中输入 tmux 命令进入会话窗口:

image-20230308170250905

  1. 在会话窗口中输入 exit 命令以退出会话窗口:

image-20230308170154180

  1. 会话窗口的编号默认从0开始自动排序(即0、1、2、3、……),可以创建一个指定名称为 backup 的会话窗口

    tmux new -s backup
  2. 将当前会话隐藏到后台

    tmux detach

    此时也可以关闭此会话窗口(这与进行远程连接时突然断网具有相同的效果),Tmux 服务程序会自动帮我们进行保存。

  3. 查看后台有多少会话:

    tmux ls
  4. 回到刚才创建的 backup 会话中

    tmux attach -t backup
  5. 多窗格管理

    Tmux 服务具有多窗格功能,能够将一个终端界面按照上下或左右进行切割,从而使得能同时做多件事情,而且之间互不打扰,可以使用以下命令上下分割:

    tmux split-window

    image-20230308171316323

    使用以下命令左右分割:

    tmux split-window -h

    image-20230308173710023

本文系作者 @ admin 原创发布在 文档中心 | AheadAI ,未经许可,禁止转载。