免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1075 | 回复: 0
打印 上一主题 下一主题

Linux screen教程-如何应用Linux的screen来管理会话(转) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-24 10:16 |只看该作者 |倒序浏览

Linux
screen
教程
如何应用Linux
screen
来管理
会话
shell
会话
意外断开了,需要多shell会话吧?
正当你通过SSH登录到远程服务器上,兴高采烈地敲击着键盘。突然,字符不闪了,接着看到的是可怕的消息“Connetion Closed(连接断开)”,这时你的
会话
已经丢失。唉,你刚刚进行了一半的工作不得不从头再来!好在你可以使用screen阻止这一切的发生。Linux的screen工具不仅能保存你的会话以防断开连接,它还能通过在同一个SSH会话中使用多个窗口来提高工作效率。
用Linux Screen工具管理
会话

Linux Screen工具可以在连接断开的时候保存
会话

Linux下的
screen
是什么?
按照man手册页的所述,“screen
是一个全屏窗口管理器,它混合多个工作(通常是交互性shell)到一个终端上”。当你工作在特定的服务器上这可能是救急的。screen包含多个重要特
性来帮助你更高效和安全地管理你的服务器。接下来我要谈论三个我使用最多的特性(多窗口,日志,会话),不过要获取完整细节请查看man手册页面。
在Linux上安装
screen
可能你的操作系统已经安装了
screen
。在大多数的Red Hat发行版上,你会发现/usr/bin/screen这个文件。要想知道screen的实际路径的话,可认使用which命令:
[admin@ensim admin]$ which
screen
要是还没有
screen
的话,你可以从针对你的操作系统轻松地安装对应的RPM或其它包文件。在Cobalt Raq 服务器上,你可以安全地使用适合自己操作系统的RedHat RPM包。
Screen RPM包:
rpmfind
Screen 网站:
GNU Screen
你可能已经安装了
screen
或者已经获取RPM包,我不现叙述从源码编译screen的内容,让我们来继续介绍如何使用screen。
使用
screen
可以像其它命令一样直接在命令行中启动
screen

[admin@gigan admin]$
screen
你可能会看到文字信息或者什么也没有。没有提示信息的情况下,你可能认为什么也没发生,实际上你已经在
screen

一个窗口了。除了接受一些特殊字符以外这个程序和正常的shell很相似。(不过)screen使用快捷键“Ctrl-A”
作为信号把命令发送给screen而不是(以往的)shell。若要获取帮助,只需用“Ctrl-A”再按“?”,现在你就会看到screen的帮助页
面。
                Screen key bindings, page 1 of 2.
                Command key:  ^A   Literal ^A:  a
break      ^B b       lock
screen
^X x       reset      Z         
clear      C          log        H          screen     ^C c      
colon      :          login      L          select     " '      
copy       ^[ [       meta       a          silence    _         
detach     ^D d       monitor    M          split      S         
digraph    ^V         next       ^@ ^N sp n suspend    ^Z z      
displays   *          number     N          time       ^T t      
fit        F          only       Q          title      A         
flow       ^F f       other      ^A         vbell      ^G        
focus      ^I         pow_break  B          version    v         
help       ?          pow_detach D          width      W         
history            prev       ^P p ^?    windows    ^W w      
info       i          readbuf            
lastmsg    ^M m       remove     X          xoff       ^S s      
license    ,          removebuf  =          xon        ^Q q      
                 [Press Space for next page; Return to end.]
按键绑定(Key bindings)指的是按下“Ctrl-A”后
screen
接受的命令。如果喜欢的话,你可以使用 .screerc 文件来重新设置这些按键,不过我使用的是默认的。
多窗口
screen
,像许多的窗口管理器一样,能支持多窗口。这个功能在处理多个任务且同时没有打开新的
会话

很有用。作为一个系统管理员,我常常要同时开四五个SSH会话。在每个shell下,我可能要处理两三个任务。不使用screen的话,需要15个SSH
会话,15次登录,15个窗口等等。使用screen,每个系统都分配到一个单独的会话中,我通过screen来管理系统上不同的作业。
要打开新的窗口,只需要使用“Ctrl-A”“c”。创建的新的窗口会显示一个默认的命令提示符。例如,我可以运行top命令后再打开一个新的窗口来做其它的工作。Top继续留在那运行!可以亲身实验一下,启动
screen
并运行top。(注:为了节省空间我截断了多个屏幕。)
启动top
Mem:   506028K av,  500596K used,    5432K free,      
0K shrd,   11752K buff
Swap: 1020116K av,   53320K used,  966796K free        
          393660K cached
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %ME
6538 root      25   0  1892 1892   596 R    49.1  0.3
6614 root      16   0  1544 1544   668 S    28.3  0.3
7198 admin     15   0  1108 1104   828 R     5.6  0.2
现在可以通过“Ctrl-A”“c”来打开一个新窗口
[admin@ensim admin]$
To get back to top, use "Ctrl-A "n"
Mem:   506028K av,  500588K used,    5440K free,      
0K shrd,   11960K buff
Swap: 1020116K av,   53320K used,  966796K free        
          392220K cached
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %ME
6538 root      25   0  1892 1892   596 R    48.3  0.3
6614 root      15   0  1544 1544   668 S    30.7  0.3
你可以创建多个窗口然后通过“Ctrl-A”“n”切换到下一个窗口,或者使用“Ctrl-A”“p”返回上一个窗口。当你在其它窗口工作时,其它窗口的每个程序都会保持运行。
退出
screen
有两种方式退出
screen
。第一种和登出一个shell一样,你可以通过“Ctrl-A”“K”或者“exit”来终止一个窗口。这样当前的窗口会被关闭,如果你打开了多个窗口,你就会直接转到其余中的一个,而如果是仅有的一个窗口时,你就退出了screen。
另外一种退出
screen
的方式是分离窗口。这种方式只是简单地关闭了窗口但进程仍运行着。如果你有确定要长时间执行的进程,还需要关闭SSH程序时,你便可以使用“Ctrl-A”“d”分离窗口。这会使你回到shell中。所有的screen窗口都待在那里,你可以稍后重新接管它们。(译者注:这很像我们实际中的最小化窗口和程序后台运行)
接管
会话
假设你正用着
screen
花了很长时间编译着一个程序,突然间你的连接断开了。请不用担心,screen会保存你的编译进度。重新登录你的操作系统后使用screen列表工具查看有哪些
会话
正在运行:
[root@gigan root]#
screen
-ls
There are screens on:
        31619.ttyp2.gigan       (Detached)
        4731.ttyp2.gigan        (Detached)
2 Sockets in /tmp/screens/S-root.
在这里,我有两个不同的
screen
会话
。要需要重新接管其中一个,使用恢复窗口的命令:
[root@gigan root]#
screen
-r 31619.ttyp2.gigan
只需要使用 -r 选项再接
会话
的名,现在你便可以重新回到刚才的屏幕。令人欣喜的是,你还可以在任何地方重新接管。不论在办公室还是其它客户端上,你都可以使用screen来启动一项工作然后退出。
屏幕记录
作为一名顾问,我发现记录我在别人的服务器上的操作很重要。所幸,
screen
可以轻松地通过使用“Ctrl-A”“H”,来建立一个实时的
会话
日志来实现。screen会把多个会话的数据添加到文件中。使用日志记录函数捕捉你的操作非常有用,特别是当你做了很多改变的时候。如果失误了,可以通过查看日志来恢复。
linux
screen
使用技巧
我再来谈一谈其它使用
screen

很酷的技巧。screen可以监控一个窗口是活动的还是空闲的。这在下载大文件、编译或是需要查看输出的时候很重要。如果你下载一些东西或者编译,你可以
后台查看。转到你想监控的screen下,使用“Ctrl+A”“M”来查看活动状态或者使用“Ctrl+A”“_”来后台查看。打开或者切换到新的窗
口,当检测到活动或者空闲时,下方会提示带有窗口的序号的消息。可以使用“Ctrl+A”“"”(单引号)快速地切换到这个窗口,然后键入这个窗口的编号
来停止监控。转到这个窗口并重新监控也使相同的命令。
Reference引用
《Linux Magazine 》2003年1月105期,作者: Adam Lazur ,有变动。更多信息来源man手册页。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/79914/showart_2101797.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP