GNU Screen终端模式下的小工具

大多数现代Unix类操作系统(比如Linux,、MacOS X和BSD等)都带有一个叫做GNU Screen的终端模式下的小工具。如果把终端比作战士,那GNU Screen就是战士手中强有力的武器,对于文本模式下的">人机交互而言,它是一把名副其实的瑞士军刀。

仅管这一工具用处很大,却被很多人所忽视。原因何在?因为它的存在几乎少有人知,即便是那些知道的人也很少能理解它要解决的问题!在这篇文章中,我将解释screen会为你做什么,并且提供一些使用screen完成基本任务的简单介绍。本文目标读者是那些能熟练使用命令行,但对screen本身只有很少或几无经验的人。

screen之作用

一言以蔽之,screen是个终端的多路复用器。借助screen,你可以在单个终端内运行任意数量的基于终端的应用程序,如交互的命令shell,基于curses的应用程序,文本编辑器等等。做到这点的渴望正是大多数人迷上screen的原因。过去我登录到系统后,常常得打开六七个终端模拟器:一个用来读邮件,一个用来编辑代码,一个来编译代码,一个用来阅读新闻,一个用作登录web主机的shell,等等。现如今,我只要启动一个终端模拟器,然后在其中运行screen。Ok,一切搞定。

screen另一个很酷的主要特性是它能使运行着的程序脱离终端模拟器。也就是说即使你不小心关闭终端模拟器,screen也能让程序继续运行;甚至在你注销之后,它也能让程序在你下次登录后从上次中断处继续执行。也就意味着,所谓的“会话”——你在期间运行大量终端程序——是个自由流动的实体,你可以把它绑定到任意处的任意终端上,甚至根本不绑定,只要你愿意。

screen新手上路:启动以及在程序间进行切换

在你最爱的命令shell提示符下键入screen即可启动screen。也许会收到一条欢迎信息,任意键略过该信息,就会进入一个空白终端,只包含一个shell提示符,一切和你启动screen之前实在是差不多。那究竟暗藏了什么?

在screen下运行的每个程序在各自窗口内运行,每个窗口都有一个独一无二的数字标志号。Screen建立一个新窗口,标记为0,并在窗口内启动一个命令shell。试着在新窗口里输入些东西,以便过会儿你切换回到该窗口时能认出它来。

现在再建立一个窗口;那会是窗口1。按C-a c即可建立新窗口;详细步骤为,先按下Ctrl-a,然后按c(即创建create窗口)。

现在你有两个窗口了,试着在两者之间进行切换。具体动作为按C-a C-a,它会切换到当前窗口之前你使用的窗口。如果你打算运行两个以上的程序,你会需要如下一些有用的窗口切换方法:

使用C-a n和C-a p切换至窗口列表里的下一个或上一个窗口,按窗口号排序。
使用C-a N——N为0到9之间的数字——切换至相应窗口。
使用C-a " 来获得一份全屏的窗口列表。你可以使用箭头键(或者vi风格的j和k)浏览列表,在某窗口项处于高亮显示时,按回车键可激活该窗口。C-a w会显示一个小型、不能交互的窗口列表。
使用一个窗口的时候,按C-a A可以给它起名。这个名字将显示在窗口列表里,当你使用大量窗口时,它可帮助你回想起自己在每个窗口里干吗来着。

退出一个窗口中的最后一个程序后,该窗口便自行消失。你也可以用C-a K来杀死那些反常的程序。

卸下和重新附加:终端分离之妙

如果你确实做了上面的练习,那你已成功建立了一个screen会话。你可以按C-a d卸下这个会话,此外关闭包含该会话的终端模拟器也可以卸下会话。不过,请记住,上述两种方法实际上都没有终止你的会话。它们只是解开你的会话和当前终端的绑定,你所启动的运行在screen里的所有程序仍在运行之中,千真万确。

试试这个:关闭你用来做上述练习的所有终端模拟器,然后只要你愿意,甚至可以注销,重新登录。启动一个新的终端模拟器,键入screen -r(这里的R自然是代表reattach),你会回到上次卸下会话的状态。

你大可以想象一下这带来的一大堆好处。你可以一次性启动所有自己喜爱的控制台程序,然后让它们运行在一个持续的screen会话里。有些人甚至让screen在那儿工作数月。

卸下和重新附加的另一个大用场是用作控制台模式的“远程桌面”。你可以卸下一个上班时的screen会话,在家用shell登录那台机器,然后重新附加。非常,非常好用。再加点努力,你甚至可以把多个终端全都附加到同一个会话里,对协同工作和会议而言奇妙无比。

复制,粘贴,以及回滚缓冲

Screen会记下回滚行数(行数可配置),它能派上用场,因为在运行screen时你将无法使用终端模拟器的回滚功能。键入C-a [进入“copy mode”,你便可以访问回滚缓存。你可以给回滚缓冲里任意处的文本打上记号,并用C-a ]进行粘贴。Screen还能把日志写入文件中,不过该主题已超出本指南讨论范围。

监视沉默和活动

在screen里运行一大团程序的不足之一是你无法同时监视所有程序,因为一般来说,你每次只能看见一个。(事实上,你可以分割屏幕,一次看到多个,此属高级用法,不在本指南讨论范围之内)为了减少这一麻烦,Screen提供了如下特性,你可以监视一个窗口的沉默,比如用于获悉编译何时完成;或者监视一个窗口是否活跃,比如用于获悉某人最后在你喜欢的IRC频道上的谈话时间。

开始或停止监视当前的窗口的30秒沉默了30秒,按C-a _ ;开始或停止监视当前的窗口的活动,按C-a M。

和screen说拜拜
 
如卸下和重新附加一节所述,screen不易杀死(退出)。你不能只是关掉包含它的终端。(实际上,你可以这么做,不过所有进程仍会在系统中运行,等待被重新附加。)在screen里没有“quit”(退出)一键,那又该怎样才能完全退出screen呢?

据我所知,体面(即不是通过发送恶意的信号给进程而退出)退出screen的唯一途径是关闭每个screen窗口。退出每个screen运行的程序或shell,它们就会乖乖走开。当screen里运行的最后一个程序退出之时,screen本身也就“一命呜呼”了。

其它资料

Screen之能力远多于我上面所描述的功能,不过本文所写已足够你上手之用。身在screen里时,你可以键入C-a ?获取一份简要的命令列表。screen的man页也有大量信息,如有疑问,你还可以参考下列web资源:

Yahoo GNU Screen讨论组 screen邮件列表更新相当快,潜伏着许多高手。

Sven Guckes的 Screen页面 另一个概要页面;比本文更为简洁。

screen官方主页 无需赘言,该页对细节所述少的可怜。

screen man页 排版相当棒,组织成多个小节。很不错的参考手册。一定不要错过关于如何使用.screenrc定制screen的几个小节。

Screen FAQ 新手不宜,但实为解决疑难杂症、居家旅行(别扔臭鸡蛋……,纯粹kidding,译注)之必备用品。

时间: 2024-09-17 01:56:32

GNU Screen终端模式下的小工具的相关文章

mysql终端模式下不能输入中文

问题描述 mysql终端模式下不能输入中文 mysql终端模式下输入了不中文,网上说是字符集原因,字符集设置没错的..在workbench下可以输入中文并且可以插入到数据表中,也可以通过终端查看到中文数据,但是在Mysql终端模式下输入不了中文.... 解决方案 show variables like 'char%';的结果是什么,看看下 解决方案二: 可能是因为操作系统字符集和mysql字符集不一致,建议排查! 解决方案三: http://bbs.chinaunix.net/forum.php

解决Win7 64位旗舰版系统下桌面小工具更新停滞的方法

  1.首先将运行中的小工具退出,然后在键盘上按" CTRL+SHIFT+ESC "调出任务管理器.在打开的任务管理器切换到"进程"标签页,找出并结束"sidebar.exe"的进程,单击"结束进程",停止其运行. 2.接着按"Win+E" 打开 Windows 资源管理器,在地址栏中输入以%localappdata%MicrosoftWindows LiveServices,然后按回车,对Cache进行重

GNU Screen:介绍和新手教程

大多数现代Unix类操作系统(比如Linux,.MacOS X和BSD等)都带有一个叫做GNU Screen的终端模式下的小工具.如果把终端比作战士,那GNU Screen就是战士手中强有力的武器,对于文本模式下的http://www.aliyun.com/zixun/aggregation/11432.html">人机交互而言,它是一把名副其实的瑞士军刀. 仅管这一工具用处很大,却被很多人所忽视.原因何在?因为它的存在几乎少有人知,即便是那些知道的人也很少能理解它要解决的问题!在这篇文章

win7小工具打不开,win7小工具无法显示

win7小工具打不开了,安装的小工具在桌面无法正常显示,这个问题我之前也有遇到过,下面介绍下此类问题的解决方法,由于问题的产生原因较多,不保证一定能解决你的问题: 打开win7小工具,显示如下: Win7小工具打不开的解决方法: 1,可能是由于未知原因的崩溃造成,重新尝试打开,或者重启电脑,基本可以解决,无法解决可参考以下方法. 2,在开始菜单,搜索框中输入"regedit",进入注册表,定位到如下位置: HKEY_CURRENT_USERSoftwareMicrosoftWindow

Midnight Commander v4.7.5发布 终端下的文件管理工具

Midnight Commander (简称 MC) 是一款终端下的文件管理工具,通过它你可以更方便的删除.移动或复制文件及整个目录,其它还包括搜索.查看或编辑文件内容等功能.上周, MC 发布了最新的 4.7.5 稳定版,主要改变包括: 通过 C-s C-s 快捷键就可快速重复搜索. 支持不区分大小写排序. 为对话框添加了新颜色及状态栏. 添加新动作 PanelSmartGotoParentDir. 在退出编辑器时内置编辑器的书签不会丢失. 源码树进行重组. 添加了更多国际化支持等等. GNU

如何找回Win8系统下不见的附件目录和小工具

  Win8系统下不见的附件目录和小工具. 方法一: 通过搜索找到应用. 方法二: 1.右击搜索出来的小工具(如记事本),选择"打开文件位置"; 2.此时会弹出记事本小工具快捷方式所保存的文件夹,从名称和路径可以看出,这个文件夹就是"Windows 附件"文件夹,其所在的目录仍旧是"开始菜单-程序".C:ProgramDataMicrosoftWindowsStart MenuProgramsAccessoriesCalculator.lnk 3

Multi-Cloud模式下Terraform和Packer开源工具实践分享

在2017云栖大会·深圳峰会上,来自阿里云云开发的黎山分享了<Multi-Cloud基础设施和应用管理实践>.软件行业的变化.云计算的出现和兴起,推动着越来越多的企业选择Multi-Cloud模式.黎山详细介绍了Terraform和Packer开源工具的使用方法,通过4个案例源码分享了具体的实践过程.   以下内容根据直播视频整理而成.   软件行业的发展带来的DevOps的变化 在很多年前,软件会被打包成EXE或其他可运行的包,由于网络费用比较高,所以软件以小为美,并且软件功能单一.架构简单

小技巧:如何在(博客园)TinyMCE编辑器模式下同时插入Flash和Sliverlight以及代码运行框

如标题,已经知道的同学们就不用往下看了,以免浪费时间,本文内容是为博客园新手准备的.   众所周知,博客园发布博文时提供了二种html编辑器:CuteEditor 和 TinyMCE.(其实还有一种纯文本方式,不过很少有用人它,本文就不讨论它了)   TinyMCE相对在代码着色方面更出色,排版出来的文章也更好看,所以博客园推荐大家使用它,但是这东西有一个致命的缺点:如果用它直接插入Sliverlight(Xap),保存后会自动识别为Flash,这令银光侠们苦恼不已,昨天我向博客园团队反馈了,得

windows下的快速搜索工具EveryThing小工具推荐

是不是经常有这样的经历:我刚刚创建了一个文件,但是突然就记不起保存的完整名字是啥了?或者前几天记得创建了某个文件,但是只知道叫什么名字,具体放在哪个盘,忘记了.这时候你是不是很想快速找到这个文件呢?对了.本文推荐的这个小工具完全解除您的烦恼~~ 现在我就经常使用这款小工具,小巧易用,能解决一些日常中windows自带的搜索功能不能实现的问题. 好了,先贴出工具下载链接:http://www.voidtools.com/ 运行之后的效果如下: 这时,你只需要在上方的输入框输入你想搜索的东西,OK.