You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
4.6 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# screen
## 说明
**Screen** 是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话
并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能
**会话恢复**
只要Screen本身没有终止在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断用户也不
会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候也可
以执行分离命令detach在保证里面的程序正常运行的情况下让Screen挂起切换到后台。这一点和图形界面下的VNC很相似
**多窗口**
在Screen环境下所有的会话都独立的运行并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换
并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作如复制粘贴等还提供了类似滚动条的功能可以查看
窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户从不同终端
多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行
密码保护
GNU's Screen 官方站点http://www.gnu.org/software/screen/
## 选项
```markdown
screen -AmRvx -[ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业即建立新的screen作业。
-s  指定建立新视窗时所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业并删除已经无法使用的screen作业。
```
## 实例
```bash
# 常用screen参数
screen -S yourname # 新建一个叫yourname的session
screen -ls # 列出当前所有的session
screen -r yourname # 回到yourname这个session
screen -d yourname # 远程detach某个session
screen -d -r yourname # 结束当前session并回到yourname这个session
```
```markdown
# 在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始
C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next切换到下一个 window
C-a p -> Previous切换到前一个 window
C-a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换
C-a x -> 锁住当前的 window需用用户密码解锁
C-a d -> detach暂时离开当前session将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进
screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,
即使 logout 也不影响
C-a z -> 把当前session放到后台执行用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> time显示当前时间和系统的 load
C-a k -> kill window强行关闭当前的 window
C-a -> 进入 copy mode在 copy mode 下可以回滚、搜索、复制就像用使用 [vi 一样
C-b BackwardPageUp
C-f ForwardPageDown
H(大写) High将光标移至左上角
L Low将光标移至左下角
0 移到行首
$ 行末
w forward one word以字为单位往前移
b backward one word以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> paste把刚刚在 copy mode 选定的内容贴上
```
## 使用screen
```bash
# 创建一个新的窗口,推荐为每个screen会话取一个名字方便分辨
screen -S david
# 查看窗口和窗口名称,打开多个窗口后可以使用快捷键C-a w列出当前所有窗口。
```