在研发过程中,编者经常会碰见需要连接ssh到服务器上的情况,有时候网络等原因会导致ssh断开,使得正在运行的程序断掉,尤其是在模型训练的过程中,重新运行和训练模型又会浪费较多时间。tmux指令是Linux系统中为了避免ssh断开而导致正在运行的程序终止的一个很好用的命令,本文将对tmux的安装以及常用指令进行介绍。
一、tmux的安装:
tmux可以很好的解决当ssh断开的时候程序死掉的问题,是一个很好的终端复用工具。在使用前,我们需要对其进行安装,tmux的安装在不同系统上的步骤不同,主要有以下几种:
1、Ubuntu:
sudo apt install tmux
2、centos:
sudo yum install tmux
执行以上命令后,系统会自动装上对应的依赖包。
如果由于网络原因下载较慢,也可以尝试下面的离线安装方法(注:如果上述方法可直接安装,则无需进行该小节后续操作):
离线包下载指令:
wget https://github.com/tmux/tmux/releases/download/2.2/tmux-2.2.tar.gz
wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz
下载好之后,解压下载到的三个压缩文件,解压后,文件分别为
libevent-2.0.22-stable
、
ncurses-6.0
、
tmux-2.2
进入libevent-2.0.22-stable
目录,安装libevent:
# libevent
./configure --prefix=$HOME/.local --disable-shared
make && make install
进入ncurses-6.0
目录,安装ncurses:
# ncurses
./configure --prefix=$HOME/.local
make && make install
进入tmux-2.2
目录,安装tmux:
# tmux
./configure CFLAGS="-I$HOME/.local/include -I$HOME/.local/include/ncurses" LDFLAGS="-L$HOME/.local/lib -L$HOME/.local/include/ncurses -L$HOME/.local/include" --prefix=$HOME/.local/bin
make && make install
全部解压后需要配置一下环境变量,将$HOME/.local/bin
配置~/.bash_profile
文件中:
[root@localhost ~]# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:/usr/local/python3/bin
export PATH
二、tmux常用指令:
# 新建会话
tmux new -s session-name
# 查看当前存在的会话
tmux ls
# 重连tmux会话
tmux a -t name
# 删除当前会话
tmux kill-session -t session-name
除了上面这些常用指令外,还有一些快捷键:
在tmux里面Ctrl + B是一个前缀键,要先按这个组合才可以激活tmux的快捷键。注意这里需要按一下然后松开!!!
输入Ctrl + B,然后再按一下C就新建了一个窗,在左下角可以看到有0、1两窗。我们可以新建很多个窗运行命令,星号标示当前选中的窗。
输入Ctrl + B,然后再按一下N可以切换到下一个窗;
输入Ctrl + B,然后再按一下P可以切换到上一个窗;
输入Ctrl + B,然后再按一下&删除当前的窗,会提示你是否删除,输入y回车就可以删除当前的窗,所有窗都删除完后,tmux的会话也就没了。
在tmux中运行的程序即使ssh断开也不会受影响,有需求的可以安装并使用!