防止终端意外退出–Tmux介绍
一 概述
由于训练一般都是在远程的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
命令手册
- 在终端中输入
tmux
命令进入会话窗口:
- 在会话窗口中输入
exit
命令以退出会话窗口:
-
会话窗口的编号默认从0开始自动排序(即0、1、2、3、……),可以创建一个指定名称为 backup 的会话窗口
tmux new -s backup
-
将当前会话隐藏到后台
tmux detach
此时也可以关闭此会话窗口(这与进行远程连接时突然断网具有相同的效果),Tmux 服务程序会自动帮我们进行保存。
-
查看后台有多少会话:
tmux ls
-
回到刚才创建的 backup 会话中
tmux attach -t backup
-
多窗格管理
Tmux 服务具有多窗格功能,能够将一个终端界面按照上下或左右进行切割,从而使得能同时做多件事情,而且之间互不打扰,可以使用以下命令上下分割:
tmux split-window
使用以下命令左右分割:
tmux split-window -h
评论