文章目录

  • 目的
  • 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 关闭当前会话,也可以输入exit命令来关闭;

screen在创建后还可以不在当前会话中通过名称或编号直接传递指令运行,这个通常用于编写脚本使用:

#!/bin/bash# 会话名
screen_name="screen_name"
screen -dmS $screen_name# 要运行的命令
cmd="top";# 向指定的会话传输内容(注意最后的回车使命令生效)
screen -x -S $screen_name -p 0 -X stuff "$cmd\n"# 可以使用下面方式关闭会话
screen -x -S $screen_name -p 0 -X quit

更多介绍

其它常用选项:

选项 描述
-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相关推荐

  1. SSH远程会话管理工具 - screen使用教程

    刚接触Linux时最怕的就是SSH远程登录Linux VPS编译安装程序时(比如安装lnmp)网络突然断开,或者其他情况导致不得不与远程SSH服务器链接断开,远程执行的命令也被迫停止,只能重新连接,重 ...

  2. 分享:玩Linux笔记(2) —— 神奇的curl工具

    玩Linux笔记(2) -- 神奇的curl工具 http://my.oschina.net/chihz/blog/96101

  3. 作为全球闻名的笔记软件和知识管理工具,印象笔记帮助你简化你的工作、学习和生活

    印象笔记Mac版是Mac平台上印象笔记的官方新版.作为全球闻名的笔记软件和知识管理工具,印象笔记帮助你简化你的工作.学习和生活.本软件测试环境10.15.7系统! 印象笔记中文版安装教程 安装包下载完 ...

  4. Linux安装VNC远程桌面管理工具

    Linux安装VNC远程桌面管理工具 Linux远程桌面连接方式 虽说高级的Linux运维工程师管理Linux时都是使用"高大上"的命令行操作,可是在有些时候例如Oracle数据库 ...

  5. 终端多窗口管理旗舰------screen

    ###################################################### 终端多窗口管理神器 ------tmux byobu screen terminator谁 ...

  6. Kubernetes:基于命令行终端UI的管理工具 K9s

    写在前面 K9s 是一个基于终端UI的 K8S 管理工具 博文内容为 k9s 在 windows.Linux 以及docker 安装Demo 简单的 热键使用. 理解不足小伙伴帮忙指正 我所渴求的,無 ...

  7. 【笔记】最佳日志管理工具:51个有用的日志管理、监视、分析等工具

    最佳日志管理工具:51个有用的日志管理.监视.分析等工具 痛苦的纯文本日志管理日子一去不复返了.虽然纯文本数据在某些情况下仍然很有用,但是在进行扩展分析以收集有洞察力的基础设施数据并改进代码质量时,寻 ...

  8. 【测试工具】在linux测试环境安装bug管理工具禅道

    在我们测试中,为了方便管理测试流程,提交测试发现的bug,我们需要使用到bug管理工具.有些大公司可能会自己开发一些bug管理工具,但是我们也会用一些开源的bug管理工具,比如Bugzilla,Red ...

  9. linux安装MySQL的可视化管理工具

    deepin15.7 前提:电脑上已经安装好MySQL,就缺一个可视化管理工具,每次敲命令比较麻烦 win10上安装mysql,会安装相应的一系列服务,但是linux就不一样了,每一样都是手动敲的命令 ...

最新文章

  1. python有哪些常见的开发环境_Python集成开发环境有哪些
  2. 从零开始入门 K8s | etcd 性能优化实践
  3. foreach循环怎么获取全部返回值_JavaScript中For循环的3种版本和使用场景
  4. JDK源码分析-TreeMap(1)
  5. 安卓虚拟摄像头_iPhone 的「第四颗摄像头」位置,为什么给了激光雷达?
  6. IDEA显示完整目录,取消合并的文件,取消“ . “ 的这种目录
  7. 机器学习-极大似然估计
  8. java keydown_键盘事件keydown、keypress、keyup随笔整理总结
  9. 神经网络电子书,神经网络入门书
  10. win10 html css,纯 HTML/CSS 高仿 Win10 加载动画
  11. Nginx 配置域名
  12. 微信调整字体大小 html,H5禁止微信内置浏览器调整字体大小
  13. 不可不学的摄影技巧.1—构图
  14. word文档乱码了怎么办
  15. 20210703-vue在Mac上的安装和初始化及遇到的问题
  16. 《炬丰科技-半导体工艺》单层胶体晶体的微纳米光刻技术研究进展
  17. AntV-G6:画自动连线流程图
  18. spark 实现大表数据关联
  19. rman如何直接备份到异地硬盘,磁带机和磁带库
  20. 使用普通A4纸 热转印PCB

热门文章

  1. python创建画布_Python——绘图
  2. android12-targetsdk31报错Failed to install-write all apks
  3. Jquery获取ViewBag传入的list集合
  4. 爬虫第二弹 图片解析
  5. 实现memset函数
  6. centos8下zookeeper命令行操作
  7. I - 数据结构实验之队列一:排队买饭
  8. java实现RC4加解密
  9. 2020年最新SCI期刊影响因子以及JCR分区表
  10. 杭电毕业bg dfs