什么是 screen 嗯,从小历史就不好,这里不谈 screen 的历史, screen 是干嘛的?依照它的在线手册(manual pages),它是个全萤幕的视窗管理员(full-screen window manager),不过别紧张,它跟 X-Window 上面的 GNome,AfterStep 等等视窗管理员一点关系也没有。
简单地说,它是个文字界面的 VT100/ANSI 终端模拟器(terminal emulation),如果你玩网络已有一段时间了,那你一定曾经在某 BBS 站注册时,会发现它要你输入你的终端机型别,通常预设就是 VT100 了,所以只要按了 enter 键就可以了,而什么是 terminal ,可以想成是定义你键盘上某个键按下去之后在萤幕上会显示出来什么符号或是字元,以及萤幕上的一行可以容纳多少个字元等等,详细的资料请参考 termcap , FreeBSD 使用者请看 /usr/share/misc/termcap,Linux 使用者(RedHat)请看 /etc/termcap 。至于 Window 的使用者,对不起,找个工作站连上去吧。
好,那么 screen 到底可以做些什么呢?
当我们执行 screen 时,会进入 screen 的空间里,你会发现没什么变化,只是好像重新执行了一次 shell ,没错,如果你只做一件事,其他都不管,那 screen 对你来说没什么做用,但是如果你打算登入到很多 bbs 站(好比来个五个 bbs 站吧),可是又怕在这么多视窗中切换会不小心跟错误的人传了错误的讯息,或是怕视窗开了太多,有人传给你重要的讯息而你看不到而忽略了,那你就需要它了。
当然,我的意思不是说 screen 是上 bbs 站的利器(当然也是:p),而是可以让你只要靠一个视窗就可以同步地处理很多的事情,你可以在浏览某大 bbs 站文章时,同时正有一个 process 在编程明天要交的功课,而另一个 process 正在帮你传送(ftp)某个大档案。而你可以不需要再移动你的手放到滑鼠上面去切换视窗,只需要按三个键就可以切换到你希望看到的视窗。
中文字是很麻烦的,刚刚说的视窗,实际上是不同的东西,在 X-Window 下或是 Window98/NT/2000 下的视窗就是开出来一个个外面有框框的东西,右上角还会有三个小框框让你缩放或关掉这个视窗。而经由 screen 所开出来的视窗则只是在原来的视窗里再生出一个视窗,你一次只能看到一个视窗画面,但是同时所有的视窗(最多一个 screen session 可以开十个视窗)仍然在运作(好比在背景执行的 process)。
附:
screen
功能说明:多重视窗管理程序。
语 法:screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
补充说明:screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式的终端机时,才有可能用到screen程序。
参 数:
-A 将所有的视窗都调整为目前终端机的大小。
-d<作业名称> 将指定的screen作业离线。
-h<行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r<作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S<作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。