Linux 会话管理
在 terminal 终端中输入命令,这种用户与计算机的临时交互称为一次会话(session)。
会话的一个重要特点:与其中启动的进程是连在一起的,打开窗口、会话开始,关闭窗口、会话结束,会话内部的进程也会随之终止。
当有时候我们正在执行命令时,突然网络断线了,再次登陆是找不回上一次执行的命令的,因为上一次会话窗口已经终止了,进程也随之消失了。为了解决这个问题,会话可以与窗口解绑,窗口关闭时,会话并不终止,而是继续运行,等到需要的时候,再让会话绑定窗口。
终端复用器软件(Screen, Tmux)就是会话与窗口的解绑工具:
它允许在单个窗口中,同时访问多个会话,这对于同时运行多个命令程序很有用。
他可以让新窗口接入已存在的会话。
它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
它还支持窗口任意的垂直和水平拆分。
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
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,方向键
窗格快捷键:
快捷键 | 说明 |
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, , | 窗口重命名 |