Linux笔记:终端复用与管理工具screen和tmux

Posted Naisu Xu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux笔记:终端复用与管理工具screen和tmux相关的知识,希望对你有一定的参考价值。

目的

通过终端使用Linux时比较纠结的是一个终端通常同一时间只能做一件事,虽然可以将任务放入后台,但是对于有输出或交互的任务放入后台并不是一个好的选择。另一个比较纠结的问题是任务无法脱离终端运行,如果使用基础的命令使其脱离后台运行,下次就没法在终端中交互管理该任务了。

对于上面这些问题一般使用screen和tmux等终端复用与管理工具来处理,这篇文章将对相关内容进行说明。

很多新手经常碰到的问题就是按照网上的教程组了个服务器,然后安装运行了某些服务器软件,比如网站服务器、游戏服务器这些,然后退出终端后服务器就不工作了。使用screen和tmux这些工具就能很好的解决这个问题。

screen

快速入门

  • 安装
    在Debian和Ubuntu等系统中可以使用下面命令安装screen:
    sudo apt install screen
  • 创建新会话
    screen 创建新会话并进入;
    screen -S name 创建一个名为name的会话并进入;(推荐做法)
  • 退出会话
    在screen创建的会话中依次按下键盘 ctrl + a ctrl + d 或者 ctrl + a d 退出当前会话;
  • 列出已创建的会话
    使用 screen -ls 可以列出已创建的会话,分别显示pid号、会话名称、创建时间、状态(Detached-分离、Attached-连接);
  • 重新进入会话
    screen -r pid 使用pid号重新进入;
    screen -r name 使用会话名称重新进入;
    如果已经在一个会话中想要换到另一个会话,选项可以使用 -d -r
  • 关闭会话
    在screen创建的会话中可以依次按下键盘 ctrl + a k 关闭当前会话;

更多介绍

其它常用选项:

选项描述
-d将指定的会话从终端分离 置为Detached
-R重新进入会话 若没有该会话则新建会话
-wipe列出已创建的会话 并清除状态为dead的会话

其它常用键绑定:

键绑定描述
ctrl + a ?查询所有键绑定
ctrl + a x锁定当前会话

更多内容可以参考 man screen 或是下面链接:
https://www.gnu.org/software/screen/

tmux

快速入门

tmux基础功能和screen差不多,但是目前来说tmux总体上比screen更加好用些。

  • 安装
    在Debian和Ubuntu等系统中可以使用下面命令安装tmux:
    sudo apt install tmux
  • 创建新会话
    tmux 创建新会话并进入;
    tmux new -s name 创建一个名为name的会话并进入;(推荐做法)
    tmux创建的会话会在底部依次显示会话名、窗口名、主机名、时间等信息;
  • 退出会话
    在tmux创建的会话中依次按下键盘 ctrl + b d 退出当前会话;
  • 列出已创建的会话
    使用 tmux ls 可以列出已创建的会话,会话名称、会话含有的窗口数、创建时间;
    如果已经在tmux创建的会话中的话也可以依次按下键盘 ctrl + b s 进行查看,这个功能比较厉害,还可以预览各个会话的内容,并选择切换
  • 重新进入会话
    tmux a -t name 使用会话名称重新进入已存在的会话;
    如果已经在tmux创建的会话中的话也可以使用 tmux switch -t name 切换会话(没有 ctrl + b s 来的好用);
  • 关闭会话
    tmux kill-session -t name 使用会话名称关闭已有会话;
    如果已经在tmux创建的会话中的并且只有一个窗口和窗格的情况下可以按下键盘 ctrl + d 关闭当前会话;
  • 重命名会话
    tmux rename-session -t old-name new-name

要注意的是在tmux创建的会话中无法通过滚轮上下来查看历史信息,需要依次按下键盘上 ctrl + b PgUp ,接着就可以使用 PgUp PgDn 来查看历史信息了,按下 q 退出。

到目前位置tmux和前面的screen其实还是没有太大差别的,主要是快捷键、选项以及小部分操作上有些不同,真正区别大的是tmux的每个会话中还有窗口和窗格的概念。

窗口与窗格

一个tmux的会话中可以有多个窗口(window),每个窗口又可以分割成多个窗格(pane)。对窗口和窗格相关操作都是在会话中进行的。

  • 新建窗口
    在会话中依次按下键盘 ctrl + b c 创建新窗口;
    多个窗口下底部带*标记的为当前活动窗口;
  • 切换窗口
    ctrl + b w 列出所有窗口,可以预览并选择切换;
    ctrl + b 0 切换到0号窗口,依此类推;
    ctrl + b p 上一个窗口;
    ctrl + b n 下一个窗口;
  • 关闭窗口
    ctrl + b & 关闭当前窗口,会提示,按下y并回车确定;
    当前窗口只有一个窗格的情况下可以按下键盘 ctrl + d 关闭当前窗口;

如果把前面的会话看做是一个excel文件的话,那窗口就像是其中的一张张sheet。再接下去的窗格就开始魔幻了:

  • 新建窗格
    ctrl + b % 将当前窗口垂直分割;
    ctrl + b " 将当前窗口水平分割;
  • 切换窗格
    ctrl + b ctrl + b ctrl + b ctrl + b
  • 调整窗格
    ctrl + b space 依次切换窗格布局;
    ctrl + b { 当前窗格与上一个窗格交换位置;
    ctrl + b } 当前窗格与下一个窗格交换位置;
  • 缩放窗格
    ctrl + b z 当前窗格全屏显示,再使用一次会变回原来大小;
  • 拆分窗格
    ctrl + b ! 将当前窗格拆分为一个独立窗口;
  • 关闭窗格
    ctrl + b x 关闭当前窗口,会提示,按下y并回车确定;
    也可以按下键盘 ctrl + d 关闭当前窗口,不会提示;

更多介绍

tmux内容挺多的,更多内容可以参考 man tmux 或是下面链接:
https://github.com/tmux/tmux

tmux可以创建很多的会话、窗口、窗格,如果用的多的话在系统重启或崩溃的情况下一个个恢复就比较纠结了。针对这个情况甚至出了附加的工具来管理这些内容,参考如下:
https://tmuxp.git-pull.com/

总结

screen和tmux这类工具的出现给linux服务器的使用带来了很大的便利,借助这些工具你可以让所有工作都在前台跑着,或者随意换电脑登陆继续之前的工作。

以上是关于Linux笔记:终端复用与管理工具screen和tmux的主要内容,如果未能解决你的问题,请参考以下文章

tmux安装与使用

一款超牛的 Linux 终端复用神器(附安装使用教程)

一款超牛逼的 Linux 终端复用神器(附安装使用教程)

Linux系统终端session保持服务工具-Tmux

【Linux操作】---终端神器tmux

[Linux]tmux基础操作