Screen 使用

今天听同学说了这个命令好奇的不行了。一起来研究下吧

下载:

 

yum install -y screen

查看:

rpm -qa|grep screen
screen-4.0.3-18.el6.x86_64

开始使用:

Screen命令后跟你要执行的程序

=================

screen vi screen_test.txt

退出VI 就退出窗口/会话

================

screen

================

 

以上两种方式都创建新的screen会话。我们还可以在一个已有screen会话中创建新的窗口。在当前screen窗口中键入C-a c,即Ctrl键+a键,之后再按下c键,screen 在该会话内生成一个新的窗口并切换到该窗口。

screen还有更高级的功能。你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。

例如,我们打开一个screen窗口编辑/tmp/abc文件:

screen vi /tmp/abc

之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入C-a d,Screen会给出detached提示:

[root@1-11-108 ~]# screen
[detached]
[root@1-11-108 ~]# screen -ls
There is a screen on:
23859.pts-0.1-11-108 (Detached)
1 Socket in /var/run/screen/S-root.

[root@1-11-108 ~]# screen
[detached]

 

重新连接会话:

 screen -r  23859

你可能注意到给screen发送命令使用了特殊的键组合C-a。这是因为我们在键盘上键入的信息是直接发送给当前screen窗口,必须用其他方式向screen窗口管理器发出命令,默认情况下,screen接收以C-a开始的命令。这种命令形式在screen中叫做键绑定(key binding),C-a叫做命令字符(command character)。

可以通过C-a ?来查看所有的键绑定,常用的键绑定有:

C-a ? 显示所有键绑定信息
C-a w 显示所有窗口列表
C-a C-a 切换到之前显示的窗口
C-a c 创建一个新的运行shell的窗口并切换到该窗口
C-a n 切换到下一个窗口
C-a p 切换到前一个窗口(与C-a n相对)
C-a 0..9 切换到窗口0..9
C-a a 发送 C-a到当前窗口
C-a d 暂时断开screen会话
C-a k 杀掉当前窗口
C-a [ 进入拷贝/回滚模式

Screen常用选项

使用键绑定C-a ?命令可以看到, 默认的命令字符(Command key)为C-a,转义C-a(literal ^a)的字符为a:

-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,但删掉那些无法连接的会话

下例显示当前有两个处于detached状态的screen会话,你可以使用screen -r <screen_pid>重新连接上:

[root@tivf18 root]# screen –ls
There are screens on:
        8736.pts-1.tivf18       (Detached)
        8462.pts-0.tivf18       (Detached)
2 Sockets in /root/.screen.

[root@tivf18 root]# screen –r 8736

如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话:

[root@tivf18 root]# kill -9 8462
[root@tivf18 root]# screen -ls  
There are screens on:
        8736.pts-1.tivf18       (Detached)
        8462.pts-0.tivf18       (Dead ???)
Remove dead screens with 'screen -wipe'.
2 Sockets in /root/.screen.

[root@tivf18 root]# screen -wipe
There are screens on:
        8736.pts-1.tivf18       (Detached)
        8462.pts-0.tivf18       (Removed)
1 socket wiped out.
1 Socket in /root/.screen.

[root@tivf18 root]# screen -ls  
There is a screen on:
        8736.pts-1.tivf18       (Detached)
1 Socket in /root/.screen.

[root@tivf18 root]#

-d –m 选项是一对很有意思的搭档。他们启动一个开始就处于断开模式的会话。你可以在随后需要的时候连接上该会话。有时候这是一个很有用的功能,比如我们可以使用它调试后台程序。该选项一个更常用的搭配是:-dmS sessionname

启动一个初始状态断开的screen会话:

[root@tivf06 tianq]# screen -dmS mygdb gdb execlp_test

连接该会话:

[root@tivf06 tianq]# screen -r mygdb

管理你的远程会话

先来看看如何使用screen解决SIGHUP问题,比如现在我们要ftp传输一个大文件。如果按老的办法,SSH登录到系统,直接ftp命令开始传输,之后。。如果网络速度还可以,恭喜你,不用等太长时间了;如果网络不好,老老实实等着吧,只能传输完毕再断开SSH连接了。让我们使用screen来试试。

SSH登录到系统,在命令行键入screen。

[root@tivf18 root]# screen


Screen详细参数

以上是通过简单的例子介绍screen的常见用法,下面对其参数进行详细介绍。screen的命令语法为:

screen [-AmRvx -ls -wipe][-d <name>][-h <line>][-r <name][-s ][-S <name>]

其中的参数意义如下:

  • -A:将所有的视窗都调整为目前终端机的大小。
  • -d:分离指定的screen会话。
  • -h:指定视窗的缓冲区行数。
  • -m:即使目前已在会话中的screen会话,仍强制建立新的screen会话。
  • -r:恢复分离的screen会话。
  • -R:先试图恢复离线的会话。若找不到离线的会话,即建立新的screen会话。
  • -s:指定建立新视窗时,所要执行的shell。
  • -S:指定screen会话的名称。
  • -v:显示版本信息。
  • -x:恢复之前离线的screen会话。
  • -ls:显示目前所有的screen会话。
  • -list:显示目前所有的screen会话。
  • -wipe:检查目前所有的screen会话,并删除已经无法使用的screen会话。

在每个screen会话中,可以使用的命令如下。注意,screen的命令都是以ctrl+a(C-a)开始的,以下省略C-a而直接以后面的按键替代:

  • ?:Help,显示按键绑定情况。
  • c:Create,创建新的窗口。
  • n:Next,切换到下个窗口。
  • p:Previous,切换到前一个窗口。
  • M:查看活动状态。
  • x:锁住当前的窗口,需用用户密码解锁。
  • d:Detach,暂时离开当前会话,此后可以恢复。
  • z:把当前会话放到后台执行,可以使用shell的fg命令回去。
  • w:Windows,列出已创建的窗口。
  • t:Time,显示当前时间。
  • K:Kill,强行关闭当前的窗口。
  • [0..9]:切换到第 0..9个窗口。
  • [Space]:由窗口0顺序切换到窗口9。
  • C-a:在两个最近使用的窗口间切换。
  • S:水平分屏。
  • |:垂直分屏。
  • X:关闭当前分屏。
  • Q:关闭除当前分屏的所有分屏。
  • [Tab]:在分屏中切换。
  • [:Copy,进入拷贝模式,此时可以回滚、搜索、复制,就像用使用vi一样。
  • ]:Paste,粘贴刚刚在拷贝模式选定的内容。

其中在拷贝模式下可以使用的命令包括

  • C-b:Backward,PageUp。
  • C-f:Forward,PageDown。
  • H:High,将光标移至左上角。
  • L:Low,将光标移至左下角。
  • 0:移到行首。
  • $:移到行末。
  • w:forward one word,前移一个字。
  • b:backward one word,后移一个字。
  • Space:第一次按标记起点,第二次按标记终点。
  • Esc:结束copy mode。

参考地址:https://www.ibm.com/developerworks/cn/linux/l-cn-screen/
http://noalgo.info/1000.html

 

posted @ 2015-09-24 14:42  lihbeibei  阅读(425)  评论(0编辑  收藏  举报