Screen

我 的 host 是 Ubuntu 10.04 , 而我的 guest 是 RHEL 5.4 . 由于我的小黑只有 1G 的内存 , 所以每次开启 Vbox , 在 Vbox 下操作 RHEL , 机子都卡的不行了 . 后来就想直接在我这台 host 上 ssh 到我 guest 里面的 RHEL : 最开始的时候是一个 Gnome Terminal 开四个标签 : pts/0 ssh 到 guest 上的 RHEL , 由做实验 ; pts/1 连接到本机 , 做日常管理 ; pts/2 还是连接到本机 , 由做笔记 ; pts/3 专门是用来控制 mocp . 后来用着用着发现这四个标签切换太繁琐了 , 尽管可以是用快捷键 : Alt+1/2/3/4 . 穷则思变.

于是 screen 就诞生了.

其实 , screen 真正的用场是这样的 : 当你 ssh  到 Linux 做一些诸如备份 , ftp 传输这样的工作 . 在这种情况下需要为 ftp 单独开一个终端 , 必须等待它执行完毕 , 才能关闭这个窗口 , 也就是说在它工作的时候 , 你是什么事都做不成的 .

$screen 就可以创建一个 screen ; $screen -d 挂起该会话 ; 然后可以通过 $screen -r pid 来重新连接至会话.

常用的快捷键操作:
C-a c : 开启另外一个 screen
C-a " : 列出当前的 screen , 并选择
C-a d : 暂时退出 screen
C-a ? : 帮助文档.
C-a w : 显示所有窗口列表
C-a C-a : 切换到之前显示的窗口(跟 $cd – 有点类似)
C-a n : 切换到下一个窗口
C-a p : 切换到前一个窗口
C-a 0..9 : 切换到窗口0..9
C-a d : 暂时断开 screen 会话
C-a k : 杀掉当前窗口(或者 $exit )
C-a A(Annotate) : 给当前的 screen 起个名字

$screen -ls : 列出现有 screen 会话 , 格式为 pid.tty.host.
这时候屏幕上会显示各个 screen 的状态 : Detached 表示会话处于挂起状态 , Attached 表示有终端在连接会话.


$screen -wipe : 删掉那些无法连接的会话
$screen -t : 创建一个 screen 并且同时给这个 screen 指定名称.

可以使用状态栏在视觉上进一步区分各个窗口 . 启动您喜欢的文本编辑器 , 在主目录中创建包含以下代码的 .screenrc 文件:
hardstatus on hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "
效果如下图:


参考 :
http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
http://www.ibm.com/developerworks/cn/aix/library/au-gnu_screen/

PS : 我在 screen 下开了一个 vim 来写这篇博客 , 不过将其在 Google Docs 上排版时是一片混乱 , 将其直接 cp 到 wp 上后 , 排版也是乱的 , 不知道为什么 ==?

  • http://www.freetstar.com freetstar

    YD的gnome背景阿,哈哈

    screen这个东西很好,很强大

    • jaseywang

      我把我的YD表现在文字和图片上,你把你的YD珍藏在内心深处,妳说哪个更YD?

  • http://www.zypatroon.com zypatroon

    这个背景…. Orz…

    • jaseywang

      我只是表达出了妳们寂寞男人的心声罢了,妳要感谢我的 >_<

  • http://www.zerob13.in zerob13

    首先。。。哥们该升级内存了。。。玩类unix系统不上个4g怎么够意思,哈哈
    其次,我觉得此文很棒
    最后,我感觉加上那么一句会比较让人容易看明白
    screen就是一个让你在一个终端里面可以操作多个终端的任务的命令。
    但是补充一句,这个命令其实个人感觉用途不大。你说的问题比如ftp文件传输也好,备份也好,在命令后面加个&后台掉不就好了~哈哈哈,个人简介,偏激莫怪~

    • http://www.zerob13.in zerob13

      呃,错别字,是个人见解,哈哈

  • http://www.zerob13.in zerob13

    其实这个命令最大的意义在于,可以让你在做大型耗时的交互性操作的时候可以多个任务一起来。

    • jaseywang

      说的真TM漂亮!
      PS:我是需要的不停的切换,所以&并不方便…

      • http://www.zerob13.in zerob13

        其实我是纯shell用户。。。mac基本上都是图形,linux纯shell。。。

  • http://zerob13.in zerob13

    来自shell的问候

  • http://zerob13.in zerob13

    其实最后我还是开了gnome,哈哈

    • jaseywang

      我看了下,我的X86貌似最多支持4G的内存吧…再高就可以做server了==

      • http://www.zerob13.in zerob13

        64位用户表示一开始就是4g的~~如果经济允许就上8g~

        • jaseywang

          你什么机子,一开始就是4G?

          • http://blog.ibfsu.com Carlos Gong

            他用的肯定是 Macbook Pro 或者 iMac 呗~初始就是 4G 内存起跳的~ 10寸上网本用户表示非常羡慕。。。

          • http://www.zerob13.in zerob13

            macbook pro

  • http://blog.ibfsu.com Carlos Gong

    同时和楼上诸位一样对你的终端窗口背景表示 orz~~~~~

    • jaseywang

      姐姐有什么好惊讶的 , 妳的周围天天都是母的唉 ….