screen工具妙用

原贴:http://blog.chinaunix.net/u2/63038/showart_705544.html

screen工具妙用
问题
在windows下使用putty连接linux的服务器,想要同时干多个事情。我就打开可多个putty来连接。
感觉太麻烦了,无意中找到这个工具,太牛了。下面是一些我找到的资料,及其自己的一点补充。
个人觉得这个工具在Linux系统的用处太大了,大家尽情发挥吧!!!!

--------------------------------------------
前言
screen 是什么

根据其man介绍,screen是个多元化多功能的全屏窗口管理器,每个虚拟终端都可以为你提供DEC VT100 terminal的功能, 也许你会问:DEC VT100 terminal又是什么?如果你登陆过某些字符界面的BBS,或许你会记得在注册时,其要求你输入你的终端机型别,而一般预设就是我们刚刚提到的DEC VT100 termina了.另外screen还附加提供了比如SO 6429 (ECMA 48, ANSI X3.64) and ISO 2022 standards的操作功能.

screen 可以做些什么
如果在以前或许screen 是你登陆 bbs 站的好伴侣.当你正在登陆多个BBS而又不想在多个窗口之间切换.那么screen就可以帮你的忙了。

   当然screen可不是专为BBS服务, 它可以让你只需要打开一个终端窗口就可以地处理很多的(进程)事情,举个例子:你正在shell上编写某个程序,碰巧你又需要重新启动某个服务,同时还要 FTP上传个大文件,这个时候就可以使用调用screen,只需要按下3个键就可以无须用鼠标在3个窗口间切换.
   又或者你使用PUTTY等工具登陆到服务器,不想在退出时关闭当前的进程,比如你正在复制文件等.这个时候就可以利用screen让你复制文件这个前台进程享受后台进程的"待遇"。
   又或者你使用screen来记录所有的终端输入输出。screen -L 或者进入screen后使用C-a H快捷键

正是因为screen的种种实用功能 ,已经成为不少*unix玩家的必备利器,让*unix的日常操作管理更加方便。

screen使用
使用screen非常简易.只需在SHELL键入screen,便可打开一个screen session。
当然你也可以在screen后面跟一些参数什么的。

而在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。

现在让我来简单介绍基本的命令

C-a c -> Create,开启新的 window


C-a n -> Next,切换到下个 window
C-a p -> Previous,前一个 window
C-a C-a -> Other,在两个 window 间切换
C-a 0 -> 切换到第 0 个 window
C-a 1..9 -> 切换到第 1..9 个window
C-a - -> 打开一个空白窗口


C-a w -> Windows,列出已开启的 windows 有那些
C-a A -> 让用户为当前的window输入一个名字。这个功能在打开多个window的时候是非常有用的,比如一个窗口在编译内核,我们可以将起命名为kernel。在多个window之间我们就可以从名字上进行区别了,并直接进入这个window。
C-a " -> 列出所有的window,以供选择.
C-a ' -> 输入想跳到的某一个窗口


C-a a -> 发出 C-a,在 emacs, ve, bash, tcsh 下可移到行首


以后使用putty就不用退出了。要离开时,直接进行锁定就OK了
C-a x -> 锁定当前窗口


C-a t -> Time,显示当前时间,和系统的 load
C-a K(大写) -> kill window,强行关闭当前的 window


C-a H   -> 开启/关闭log功能,这个会将当前window所发生的一切记录到screenlog.n中。
C-a h   ->写当前window的hardcopy到文件"hardcopy.n"中.


这个模式我觉得非常有用的。大家要尽力的发挥他使用的地方。呵呵
------------------------------
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、
复制就像用使用 vi 一样

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
C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上
可以跨window的哟,比如我在window1上面将屏幕内容复制,可以copy到window2等其他window上用的


C-a ? -> Help,显示简单说明

C-a d -> detach,将目前的 screen session (可能含有多个 windows)丢到后台执行
当按了 C-a d 把 screen session detach 掉后,会回到还没进 screen 时的状态,此时在 screen session 里每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。这个功能比nohup还强的哟

下次 login 进来时:

screen -ls -> 显示所有的 screen sessions
screen -r [keyword] -> 选择一个screen session 恢复对话

若 screen -ls 里有 Attached sessions:
screen -d [keyword] -> 强制 detach,以便「接手」过来

实例
说明看了那么多,让我们用一个实际例子来结束我们今天的学习。

在我们开启一个screen后,然后使用joe编辑一个文件,之后因为临时需要离开这时就可以运行Ctrl+a d,显示如下:

[becks@ec-base becks]$ screen
[detached]

这个时候当我们运行ps -e 可以看到pts/2这个我刚刚运行的screen正在运行joe
6264 pts/2 00:00:00 bash
6354 pts/2 00:00:00 joe

而当我们回来后想恢复这个session,只需要键入screen -r,而当你有多个session时候,系统将提示你选择一个,如下:
[becks@ec-base becks]$ screen -r
There are several suitable screens on:
6263.pts-1.ec-base (Detached)
6382.pts-1.ec-base (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

输入该session的pid进行恢复
[becks@becks becks]$ screen -r 6263

想退出screen的session,和退出shell一样,只需要键入exit命令,成功退出后将有以下提示
[screen is terminating]


screen的简单用法就介绍到这里,更多的功能和应有请读者参考MAN自行研究.

screen的缺点,对权限的敏感。可以参考《使用screen看管不适合“无人看管的”终端软件》的解释。
 大家在运行一些权限敏感的程序可能会有点问题。

------------------------------------------------

引用地址:

Unix/Linux 工具: Screen命令使用
http://www.winterxy.com/blog/000128.html
使用screen看管不适合“无人看管的”终端软件
http://www.uplinux.com/www/sys/03/433.shtml

 发表于: 2008-05-25,修改于: 2008-05-25 15:05 已浏览108次,有评论0条 推荐 投诉
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值