Screen极简指南
Terminal Multiplex
终端多路复用器主要特性:
-
Persistent
可以持久化保存当前的session的进程,而不用受到SIGHUP
的影响,session可以进行恢复,使工作具有连续性 -
Multiple Windows
多窗口机制,允许在屏幕上打开多个窗口进行编辑操作 -
Session Shareing
会话共享,允许多用户共享一个会话进行协作
使用场景介绍
现在的ssh终端比较强大,如securectr/xshell/iterm等,可以满足一般的需求,但是有一些情况我们只能使用一个Terminal时,就需要使用到类似screen的能力了,这些场景有:
- 机房中,直连服务器时,想要同时执行多个命令操作
- 如登录目的机器要经过很多跳时
- 如先跳板机、登录目的服务器
- 如通过ssh tunnel技术登录目的服务器,中间可能有很多跳
- 有时需要执行耗时很长的命令,
基本概念
基本概念
-
session
一个screen的会话表示,可以在 -
region
表示屏幕的一块区域,可以将window放进这个区域,进行命令操作 -
window
一个命令行窗口
session状态解释
-
attached
表示screen session与terminal进程关联上 -
detached
表示没有terminal进程关联上,但是这个不影响这个session中运行的命令
常用命令
screen session外部命令
screen
启动screen session-
screen -ls
查看screen session列表,如There are screens on: 26206.ttys001 (Detached) 19444.ttys001 (Attached)
screen -r 26206
reattach a detached screen sessionscreen -x -r 219444
Attach to a not detached screen session. (Multi display mode)
screen session内部命令
-
ctrl+a, ?
查看帮助 -
ctrl+a, “
查看当前screen的window列表 -
ctrl+a, c
新增window,并切换到新window -
ctrl+a, tab
跳转到下一个region -
ctrl+a, 0
跳转到0个window,编号从0开始 -
ctrl+a, k
kill掉当前window -
ctrl+a, |
增加垂直region -
ctrl+a, s
增加水平region -
ctrl+a, X
删除当前region -
ctrl+a, Q
除了当前region,删除其他region -
ctrl+a, d
在任意一个window中执行,将detach当前screen -
ctrl+d
退出当前region的window,如果是最后一个window则终止这个screen session
使用示例
开启screen,并在一个session region内操作
-
screen
# 开启screen session,此时会启动一个window -
echo "first window in session"
# -
Ctrl+a, c
# 启动一个新window -
Ctrl+a, "
# 查看当前窗口列表 - 选择一个窗口,回车切换当前session到该窗口
开启screen,创建多个session region
-
screen
# 开启screen session,此时会启动一个window -
Ctrl+a, |
# 水平方向增加一个region -
Ctrl+a, TAB
# 切换到下一个region中 -
Ctrl+a, c
# 创建window,并在当前region中打开
References
- https://en.wikipedia.org/wiki/Terminal_multiplexer
- https://www.gnu.org/software/screen/manual/screen.html
- linux manual screen
- https://www.ibm.com/developerworks/cn/linux/l-cn-screen/index.html
- https://www.youtube.com/watch?v=I4xVn6Io5Nw
- http://wdxtub.com/2016/03/30/tmux-guide/
- http://louiszhai.github.io/2017/09/30/tmux/