Linux控制台下 screen 命令使用学习笔记

screen 是一个非常有用的命令提供从单个 SSH 会话中使用多个 shell 窗口(会话)的能力。当会话被分离或网络中断时screen 会话中启动的进程仍将运行你可以随时重新连接到 screen 会话。如果你想运行一个持久的进程或者从多个位置连接到 shell 会话,这也很方便。

Linux控制台下 screen 命令使用学习笔记

一、背景

系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况K B 6 X a下我们都是为每一l A t u J W @ W个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,4 0 9 w I D # M在此期 } r = % I ` J间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了V ; ^ }

二、简介

GNU Screen是一款由GNU计划开发的用于命令行终端切换J e k 5 h m A的自由软件。用户可以通过该软件同时连接多个本地或p k b Q Q d N D远程的命令行会话,并在其间自由切换。K # a

GN= d ) a BU Screen可以看作是窗口管理器的命L N 5 ` k S 9 q b令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

会话恢复 j i l 9 L 5 v /

只要ScrA b % F * een本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的? T : p ( 2 X .程序正常运行的情况m * 3 ^ k 1 $下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。

多窗口

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在 x [ P 8 = . ?不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名; E u,还可以监视后台窗口的活动。

会话共享

Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

三、语法

screen -AmRvx -ls -wipe-h <行数>-s

参数说明

参数 中文说明
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称A ( _>   将指定的screen作业离线。
-h<行数>   指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>   恢复离线的screen作业。
-R   先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s   指定建立新视窗时,所要执行的shell。
-S <作业名称>   指定screen作业的名称。
-v   显示版本信息。
-x   恢复之前离线的screen作业。
-ls或--list   显示目前所有的screen作业。
-wipe   检查目前所有的screenE 9 $ u n | .作业,并删除已$ Z 经无法使用的screen作业。

四、常用screen参数

screen -S yourname -> 新建一个叫your} ` r L y G m O iname的session
screen -z U ] ) nls -> 列出当前所有的session
screen -r yourt x nname ->2 j m * w E q E; 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r y7 @ ` : x Qourname- h - ->j i R 6 W m c 结束当前session并回到yourname这个session

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。

Ctrl+a ? { f } * ^ & q示所有键绑定信息
Ctrl+a w 显示所有窗口列表
Ctrl+a Ctrl+a 切换到之前显示的窗口
Ctrl+a c 创建一个: I @ O s O新的运行shell的窗口并切换到该窗口
Ctrl+a n 切换到下一个窗口
Ctrl+a p 切换到前一个窗口(与Ct% 8 D P L srl+a n相对)
Ctrl+a 0..9 切换到窗口0..9
Ctrl+a a 发送 Ctrl+a到当前窗口
Ctrl+a d 暂时断开screen会话
Ctrl+a k 杀掉当前窗口
Ctrl+a [ 进入拷贝/回滚模式