Screen 使用指南

  1. Screen 使用流程
    1. 简单使用
    2. 管理 Screen
  2. TODO…

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…


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nickchenyx@gmail.com

Title:Screen 使用指南

Count:1.3k

Author:nickChen

Created At:2018-05-09, 21:48:29

Updated At:2023-05-08, 23:27:10

Url:http://nickchenyx.github.io/2018/05/09/screen-manual/

Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.