Screen 使用流程
参考资料:
Screen 是管理会话的一个工具,能够持有多个会话并维持,方便切换,真切的提高工作效率。
简单使用
1> 创建会话
直接键入 screen
就可以开启一个新的会话窗口:
➜ screen
# 执行之后立刻进入一个新的会话
也可以在后面跟指令,可以直接在新会话中执行这条指令:
➜ screen vim new.txt
# 这里如果使用 :q 推出 vim 的话,也会直接退出当前的会话
在 screen
管理的会话中想要创建新的会话可以使用 C-a c
。
这里的
C-a
指的是Ctrl + a
,是screen
的命令字符(command character)。
2> 管理会话
Q: 创建了多个 screen 会话之后,如何实现会话之间的跳转?
A: 使用 C-a 0..9.
在 0 ~ 9 会话之间切换, C-a n
切换到下一个会话,C-a p
切换到上一个会话。
快速回到上一个会话:使用了 C-a 0
进入了会话 0,再使用会话 C-a 3
进入了会话 3,可以直接使用 C-a C-a
返回上一个会话——即会话 0。
Q: 如何看当前新建了哪些会话?
A: 使用 C-a w
显示所有的窗口列表。
➜ 0- / 1* / 2 / 3 / 4 /
# * 号表示的是当前会话
Q: 会话都是 0~9 不方便区分会话任务,如何处理?
A: 使用 C-a A
给会话起别名,这样在使用 C-a w
指令后可以看到所有会话的别名用来区分任务。
➜ 0 /vim 1 /vim1 2- /upload 3* /do 4 /
# 可以看到 0 和 1 在执行 vim,2 在执行一个上传任务,3 在做些别的事儿,4 还没有起别名
3> 挂起|重连会话
可以使用 C-a d
用来挂起 screen
会话,这样就可以回到原来的终端了:
[detached] # 挂起 screen 会话之后打印的 echo
➜ / # 已经回到原来的终端
使用 screen -ls
可以看到这个被挂起的会话:
➜ / screen -ls
There is a screen on:
3187.ttys002.lzdeMBP (Detached) # 这就是被挂起的会话
1 Socket in /var/folders/mh/zj230g0x2996t8qvszyj3qy80000gn/T/.screen.
可以使用 screen -r <session pid>
重连到该会话:
➜ / screen -r 3187
这样就能重新进入 screen
会话了。
创建了多个会话之后,有的会话已经完成了它的职责,这时候需要关闭它了。
使用 C-a k
可以关闭当前会话。
其他常用指令:
-c file | 使用配置文件file,而不使用默认的$HOME/.screenrc |
---|---|
-d/-D [pid.tty.host] | 不开启新的screen会话,而是断开其他正在运行的screen会话 |
-h num | 指定历史回滚缓冲区大小为num行 |
-list/-ls | 列出现有screen会话,格式为pid.tty.host |
-d -m | 启动一个开始就处于断开模式的会话 |
-r sessionowner/ [pid.tty.host] | 重新连接一个断开的会话。多用户模式下连接到其他用户screen会话需要指定sessionowner,需要setuid-root权限 |
-S sessionname | 创建screen会话时为会话指定一个名字 |
-v | 显示screen版本信息 |
-wipe [match] | 同-list,但删掉那些无法连接的会话 |
-d –m 选项是一对很有意思的搭档。他们启动一个开始就处于断开模式的会话。
你可以在随后需要的时候连接上该会话。有时候这是一个很有用的功能,比如我们观察日志文件。
该选项一个更常用的搭配是:-dmS sessionname 启动一个初始状态断开的 screen
会话:
➜ / screen -dmS xxxLog tail -n 10 -f zk.log
# 这里就开启了一个观察日志的会话
# 下面只需要执行程序,然后重连到这个会话就好了
➜ / screen -r xxxLog
# 连接到打印日志的会话
4> 分屏使用
充分利用大屏优势:
- 使用
C-a S
可以上下分屏,C-a |
可以水平分屏(这个要高版本才有了) - 使用
C-a Tab
可以切换到另一个屏幕 - 使用
C-a X
可以取消当前分屏
管理 Screen
同大多数UNIX程序一样,GNU Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件 /etc/screenrc
和 $HOME/.screenrc
中指定更多,例如设定screen选项,定制绑定键,设定screen会话自启动窗口,启用多用户模式,定制用户访问权限控制等等。
配置 ~/.screenrc
# Set default encoding using utf8
defutf8 on
## 解决中文乱码,这个要按需配置
defencoding utf8
encoding gbk utf8
#兼容shell 使得.bashrc .profile /etc/profile等里面的别名等设置生效
shell -$SHELL
#set the startup message
startup_message off
term linux
## 解决无法滚动
termcapinfo xterm|xterms|xs ti@:te=\E[2J
# 屏幕缓冲区行数
defscrollback 10000
# 下标签设置
hardstatus on
caption always "%{= kw}%-w%{= kG}%{+b}[%n %t]%{-b}%{= kw}%+w %=%d %M %0c %{g}%H%{-}"
#关闭闪屏
vbell off
TODO…
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]