Linux 会话管理

庆云2年前技术文章985


在 terminal 终端中输入命令,这种用户与计算机的临时交互称为一次会话(session)。

会话的一个重要特点:与其中启动的进程是连在一起的,打开窗口、会话开始,关闭窗口、会话结束,会话内部的进程也会随之终止。

当有时候我们正在执行命令时,突然网络断线了,再次登陆是找不回上一次执行的命令的,因为上一次会话窗口已经终止了,进程也随之消失了。为了解决这个问题,会话可以与窗口解绑,窗口关闭时,会话并不终止,而是继续运行,等到需要的时候,再让会话绑定窗口。

终端复用器软件(Screen, Tmux)就是会话与窗口的解绑工具:

  1. 它允许在单个窗口中,同时访问多个会话,这对于同时运行多个命令程序很有用。

  2. 他可以让新窗口接入已存在的会话。

  3. 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。

  4. 它还支持窗口任意的垂直和水平拆分。

1、Screen

利用 screen 可以实现会话管理(新建会话、共享会话等)。

  • 创建会话

    • screen -S [SESSION]

  • 加入会话

    • screen -x [SESSION]

  • 退出关闭会话

    • exit

  • 剥离当前会话

    • Ctrl+a,d

  • 显示所有会话

    • screen -ls

  • 恢复某会话

    • screen -r [SESSION]


实例:

"新建会话"
$ screen -S assist
"查看会话"
$ screen -ls
There is a screen on:
        8925.assist     (Attached)
1 Socket in /var/run/screen/S-root.

"加入会话"
$ screen -x assist

1.png1.png

2、Tmux

Tmux 也是一个终端复用器(terminal multiplexer),类似 screen,但是更易用、更强大。

  • 启动:tmux

  • 退出:exit

Tmux 窗口有大量的快捷键,所有的快捷键都要通过前缀键唤起。默认的前缀键是:Ctrl+b,即先按下 Ctrl+b,快捷键才会生效。帮助命令的快捷键是 Ctrl+b,?,按下 q 键退出帮助。

  • 列出所有的快捷键,及对应的 Tmux 命令

    • tmux list-keys

  • 列出所有的 Tmux 命令及其参数

    • tmux list-commands

2.1 会话管理

新建会话:

第一个启动的 Tmux 窗口编号是 0,第二个是 1,以此类推。使用编号区分会话不太直观,更好的方法是为会话起名。

$ tmux new -s <session-name>


查看会话:

tmux ls 或 Ctrl+b, s 可以查看当前所有的 Tmux 会话。

$ tmux ls
$ tmux list-session


分离会话:

在 Tmux 窗口中,按下 Ctrl+b,d 或者输入 tmux detach 命令,就会将当前会话与窗口分离。

$ tmux detach


接入会话:

tmux attach 命令用于重新接入某个已存在的会话。

$ tmux attach -t <session-name>


杀死会话:

tmux kill-session 命令用于杀死某个会话。

$ tmux kill-session -t <session-name>


切换会话:

tmux switch 命令用于切换会话。

$ tmux switch -t <session-name>

2.2 窗格管理

可以将窗口分成多个窗格(pane)。每个窗格运行不同的命令。

  • 上下分窗格:Ctrl+b, "

$ tmux split-window
  • 左右分窗格:Ctrl+b, %

$ tmux split-window -h
  • 切换窗格:Ctrl+b,方向键

2.png

窗格快捷键:

快捷键

说明

Ctrl+b, %

划分左右两个窗格

Ctrl+b, "

划分上下两个窗格

Ctrl+b, 方向键

切换到其他窗格

Ctrl+b, ;

切换到上一个窗格

Ctrl+b, o

切换到下一个窗格

Ctrl+b, {

当前窗格左移

Ctrl+b, }

当前窗格右移

Ctrl+b, Ctrl+o

当前窗格上移

Ctrl+b, Alt+o

当前窗格下移

Ctrl+b, x

关闭当前窗格

Ctrl+b, !

将当前窗格拆分为一个独立的窗口

Ctrl+b, z

当前窗格全屏显示,再使用一次会变成原来大小

Ctrl+b, Ctrl+方向键

按箭头方向调整窗格大小

Ctrl+b, q

显示窗格编号

2.3 窗口管理

除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口。

新建窗口:

tmux new-window 命令用来创建新窗口。

$ tmux new-window
$ tmux new-window -n <window-name>

切换窗口:

tmux select-window 命令用于切换窗口。

$ tmux select-window -t <window-number>
$ tmux select-window -t <window-name>


窗口快捷键:

快捷键

说明

Ctrl+b, c

创建一个新窗口,状态栏显示多个窗口信息

Ctrl+b, p

按状态栏窗口顺序,切换到上一个窗口

Ctrl+b, n

切换到下一个窗口

Ctrl+b, <number>

切换到指定编号的窗口

Ctrl+b, w

从表格中选择窗口

Ctrl+b, ,

窗口重命名


相关文章

Flume使用案例之Flume与Flume之间数据传递(单Flume多Channel、Sink)

目标:使用flume1监控文件变动,flume1将变动内容传递给flume-2,flume-2负责存储到HDFS。同时flume1将变动内容传递给flume-3,flume-3负责输出到local分步...

OSS bucket权限设置

OSS bucket权限设置

问题描述调用oss的bucket资源,开始的时候可以访问,过几分钟再访问的时候,就提示拒绝访问问题原因是因为相应的bucket权限为私有,私有权限在访问文件对象时,是存在鉴权URL,存在时间有效性,所...

Apache Ranger不使用root密码进行初始化

1、背景由于使用的数据库由dba进行管理,我们无法获取到对应的ranger数据库的root密码。需要使用数据库普通用户对表进行初始化2、解决ranger admin每次修改配置(install.pro...

clickhouse集群部署(一)

clickhouse集群部署(一)

1、rpm包下载安装部署完整包地址:https://packages.clickhouse.com/rpm/stable/📎clickhouse-common-static-dbg-22.8.4.7....

Go 错误处理与单元测试

1、错误处理1.1 如何定义错误在 Go 语言中,无论是在类型检查还是编译过程中,都是将错误看做值来对待,和 string 或者 integer 这些类型值并不差别。声明一个 string 类型变量和...

oracle 回退db补丁31718723报错ins_emagent.mk:113: warning: overriding recipe for target `nmosudo'

报错内容如下:ins_emagent.mk:113: warning: overriding recipe for target `nmosudo'原因:该补丁的readme有说明该报错如下图参考mo...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。