前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >运维必备:Linux系统下的两款终端多重会话工具

运维必备:Linux系统下的两款终端多重会话工具

作者头像
全栈工程师修炼指南
发布2024-05-28 16:22:36
1240
发布2024-05-28 16:22:36
举报

0x01 系统会话终端管理

描述: 在 Linux 运维中通常会打开一个终端窗口(Terminal Windows),并在其命令行中输入执行已安装的命令,用户与计算机的这种临时交互,我们称为一次“会话(session)”。会话的一个重要特点是窗口与其中启动的进程是连在一起的。打开窗口会话开始;关闭窗口会话结束,会话内部的进程也会随之终止,不管有没有运行完成。

假如,你有如下场景,使用ssh登录远程计算机,打开一个远程窗口执行命令,当需要上传一个大文件到指定服务器时会占用到此窗口而无法执行其他命令,并且也会随着意外终止SSH会话,可能会导致上传的文件失败等问题,那有没有什么解决办法呢?

办法当前是有的,为了解决此问题,我们需要将会话与窗口进行解绑,使窗口关闭时会话并不终止,二是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口,而终端复用器软件(例如,ScreenTmux (推荐) 工具)就是会话与窗口的"解绑"工具,将它们彻底分离。

  1. 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
  2. 它可以让新窗口"接入"已经存在的会话。
  3. 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
  4. 它还支持窗口任意的垂直和水平拆分。

screen - Linux系统下的终端多重会话工具

描述: Screen是一个在Linux系统下的终端多重会话工具,可以让用户在一个终端窗口中同时运行多个终端会话。它的主要功能包括会话恢复、会话分离、多窗口管理等。

工具安装

代码语言:javascript
复制
# 由于 CentOS8 、Rocky Linux 8/9 此工具来源于 epel 源,所示需要安装 epel-release 
dnf -y install epel-release
# 之后直接安装即可
yum -y install screen

$ screen -version
Screen version 4.08.00 (GNU) 05-Feb-20

$ screen --help
Use: screen [-opts] [cmd [args]]
 or: screen -r [host.tty]

实例,Screen 命令常规使用

代码语言:javascript
复制
# 创建新会话
# Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
screen
screen -S 2

# 查看已有会话
screen -ls
  # There are screens on:
  #         1846.2  (Attached)
  #         1700.pts-0.rocky-server (Detached)
  # There is no screen to be resumed.

# 恢复(切换)会话
screen -r [会话ID]
screen -r 1700.pts-0.rocky-server
screen -ls
  # There are screens on:
  #         1846.2  (Attached)
  #         1700.pts-0.rocky-server (Attached)
  # 2 Sockets in /run/screen/S-root.
  
# 分离会话
Ctrl + A,然后按下D键即可分离当前会话,让其在后台运行。

# 进入会话
screen -x 1846.2

# 切换窗口
按下 Ctrl + A,然后按下N(下一个窗口)或P(上一个窗口)可以切换不同窗口。

# 分离并注销远程(并在此处重新连接)。
screen -D 1846.2
  # [remote power detached from 1846.2]
  # Screen session of root
  # ended.

# 退出并关闭会话
exit

weiyigeek.top-screen使用示例演示图

通过Screen,用户可以方便地管理多个终端会话,即使网络连接中断或终端窗口关闭,也可以随时恢复会话而无需重新启动命令,这使得Screen成为Linux系统管理员和开发人员常用的工具之一。

Tmux - Linux系统下终端多路复用器

描述: Tmux(也称为终端多路复用器)是一个类似于Screen的终端会话工具,允许你在一个终端窗口中同时运行多个独立的终端会话。Tmux提供了会话管理、窗口分割、会话分离、会话恢复等功能,使得用户可以更高效地管理多个终端会话,作者推荐使用此工具,感觉比 screen 好用。

安装

代码语言:javascript
复制
# 方法1.yum 源安装
$ yum install -y tmux 
$ tmux -V
tmux 3.2a

# 方法2.源码编译
$ yum install -y automake
$ git clone https://github.com/tmux/tmux.git
$ cd tmux
$ sh autogen.sh
$ ./configure && make

实例,Tmux 命令常规使用

代码语言:javascript
复制
# 新建默认会话第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。
$ tmux
# 或者,新建一个指定 test1 名称的会话
$ tmux new -s test1

# 查看所有会话
$ tmux ls
$ tmux list-sessions
  # test1: 1 windows (created Thu Mar 28 16:24:44 2024) (attached)

# 分离会话
tmux detach

# 重新接入某个已存在的会话
tmux attach -t test1

# 切换会话
tmux switch -t test1

# 杀死某个会话
tmux kill-session -t

# 会话上下分窗格
tmux split-window

# 会话左右分窗格
tmux split-window -h

# 退出会话
exit

# 列出所有快捷键
tmux list-keys

# 列出所有命令及其参数
tmux list-commands

除了,上述命令之外还有其他快捷按钮,极大的帮助我们提高运维效率。

代码语言:javascript
复制
Ctrl+b c:创建一个新窗口
Ctrl+b ,:重命名当前窗口
Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)
Ctrl+b n:切换到下一个窗口
Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号
Ctrl+b w:从列表中选择窗口
Ctrl+b %:在当前窗口中水平分割
Ctrl+b ":在当前窗口中垂直分割
Ctrl+b ;:光标切换到上一个窗格
Ctrl+b o:光标切换到下一个窗格
Ctrl+b d:分离当前会话
Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓
Ctrl+b {:当前窗格左移
Ctrl+b }:当前窗格右移
Ctrl+b Ctrl+o:当前窗格上移
Ctrl+b Alt+o:当前窗格下移
Ctrl+b x:关闭当前窗格
Ctrl+b !:将当前窗格拆分为一个独立窗口
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小
Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小
Ctrl+b q:显示窗格编号

weiyigeek.top-Tmux工具快速上手图

总的来说,Tmux是一个强大的终端会话工具,可以大大提高在 Linux 系统下一个会话多终端操作的效率和便捷性,在企业运维中也是一个非常实用的工具。

除此之外,默认情况下,tmux 从 /etc/tmux.conf 加载系统配置文件(如果存在),然后在 ~/.tmux.conf中查找用户配置文件, 所以若需要自定义 Tmux 终端样式,则需修改 Tmux 用户配置文件 /etc/tmux.con,由于,若~/.tmux.conf不存在则可以进行touch创建,操作步骤:

  1. Tmux 的快捷键前缀(Prefix)修改; 首先我建议对调 Ctrl 键和 Caps-Lock 键的功能,因为在编码过程中,你需要频繁地按下 Ctrl 键,而由于 Caps-Lock 与手指在键盘的起始位置处于同一直线,所以按下 Caps-Lock 键会更加容易、便捷。
  2. 如果你希望新的配置项能够生效; 将以下配置加入到 Tmux 的配置文件 ~/.tmux.conf 中:

实例,自定义 Tmux 终端样式配置示例。

代码语言:javascript
复制
tee ~/.tmux.conf <<'EOF'
# 取消默认按键前缀
unbind C-b

# 快捷键前缀变更为 Ctrl-a
set -g prefix C-a  

# 美化 Tmux 的状态栏
# 状态栏
# 颜色
set -g status-bg black
set -g status-fg white

# 对齐方式
set-option -g status-justify centre

# 左下角
set-option -g status-left '#[bg=black,fg=green][#[fg=cyan]#S#[fg=green]]'
set-option -g status-left-length 20

# 窗口列表
setw -g automatic-rename on
set-window-option -g window-status-format '#[dim]#I:#[default]#W#[fg=grey,dim]'
set-window-option -g window-status-current-format '#[fg=cyan,bold]#I#[fg=blue]:#[fg=cyan]#W#[fg=dim]'

# 右下角
set -g status-right '#[fg=green][#[fg=cyan]%Y-%m-%d#[fg=green]]'
EOF

# 从路径指定的一个或多个文件执行命令
tmux source-file ~/.tmux.conf

weiyigeek.top-自定义tmux界面风格图

温馨提示:作者最近正在整理自己10年笔记,全栈系列从门到实践教程将会逐步持续同步到公众号内,若需要在线实时浏览作者笔记的童鞋,请添加作者[WeiyiGeeker],当前价格¥168,获取在网络、安全、运维、开发(Sec、Ops、Dev)中的所有学习实践笔记,和问题答疑以及远程技术支持,希望大家多多支持!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈工程师修炼指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 系统会话终端管理
    • screen - Linux系统下的终端多重会话工具
      • Tmux - Linux系统下终端多路复用器
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档