screen

有tmux、byobu,还用screen干嘛?因为服务器上大多还用的是screen。

以下主要摘自:http://blog.catlovefish.com/?p=284,讲的很好。

 

进入screen

$ screen 在shell中直接用scrren就可以打开一个新的screen的session。

$ screen -S name 可以打开一个名字叫做name的screen session,方别识别,也方便以后退出session后用screen -r name来返回session。

也可以在进入session后,用“ctrl+a :”后输入sessionname name来修改sessionname。是不是觉得和vim很像?

$ screen -ls 可以查看已经存在的screen session

$ screen -d  [[pid.]tty[.host]]可以进入已有的screen session。其中后面这个参数变化很多,可以是pid,也可以是tty,也可以是把$ screen -ls显示出来的信息都复制进来。

$ screen -rd  [[pid.]tty[.host]] 如果该session还没有detach,要挂载的话就必须加上-r来强制detach已有的session。

退出screen

$ exit 这个命令用于退出当前的shell,如果没有活跃的程序,screen就自动退出了。

ctrl-a  d   注:ctrl-a是screen的切换命令,按下后进入了screen的快捷键模式(这名字我自己取的,其实就是为了和bash的快捷键区分开来),然后按下d就会detach session了。效果和shell中按下ctrl-d是一样的。

ctrl-a :quit  这个用法也和vim很像吧。

管理窗口

ctrl-a c    新建窗口并启动默认的shell。

ctrl-a K  强制关闭当前窗口,一般用于关闭僵死的窗口。

ctrl-a w 在标题栏出显示窗口列表。

ctrl-a “  在主窗口显示窗口列表,可以用vim的位移绑定键hjkl,或者方向键加回车键选择。

ctrl-a 1 这里的参数是0到9的数字,可以用于快速切换当前窗口。

ctrl-a n切换到一下个窗口

ctrl-a p切换到前一个窗口

ctrl-a ctrl-a  切换到前一个窗口

ctrl-a A 修改窗口的名称

分屏

其实最不喜欢的就是screen的分屏,tmux这点比它做得好。但是没办法,谁让screen到处有呢。

ctrl-a S 新建一个水平的分屏。新建的分屏默认啥都没有,用ctrl-a <tab>切换过去后用ctrl-a c新建shell。

ctrl-a <tab> 在分屏之间切换。

ctrl-a Q 关闭当前活跃分屏外的所有分屏。

ctrl-a X 关闭当前活跃分屏外的所有分屏,并且锁住当前的session。

ctrl-| 新建一个垂直的分配。

复制粘贴

screen还有一个不方便的就是输出超过一个屏幕的时候很难看前面的信息,必须进入复制状态来移动屏幕。

ctrl-a [ 进入复制模式,可以用<ESC>退出。

在复制模式中,可以用vim的位移绑定键hjkl,或者方向键移动光标。

用ctrl-f,ctrl-b,pgup,pgdown来翻页。

按下<space>表示来开始标记,再次按下<space>表示标记结束,并自动把标记的内容复制到screen的复制黏贴buffer里面。

在普通模式下按下ctrl-a ] 黏贴到当前窗口。

在普通模式下按下ctrl-a  >将screen复制黏贴buffer的内容写到临时的exchange文件(/tmp/screen-exchange)。

在普通模式下按下ctrl-a  <将临时的exchange文件(/tmp/screen-exchange)内容读取到screen的复制黏贴buffer里面。

其他

ctrl-a ? 最重要的一个命令,就是查看快捷键帮助的~

ctrl-a t 查看系统时间

ctrl-a ctrl-g 切换虚拟bell,也就是出错的时候屏幕闪烁。这个很实用。

ctrl-a H 为当前的窗口记录一个log,对于记录测试信息很有用。

ctrl-a M 当该窗口出现变化时发通知到标题栏。

ctrl-a _  若该窗口15秒内都没有变化,则将通知发到标题栏。

ctrl-a s   关闭输出,不小心按下这个话就会误认为screen僵死了;用ctrl-a q可以使得screen恢复正常。bash中也有个ctrl-s的命令,一样的效果,需要用ctrl-q来恢复。

 

我的.screenrc

# 启动时不显示欢迎屏幕
startup_message off
# 定义screen的功能键为Ctrl-Z
escape ^Zz
# 屏幕缓冲区 1024 行
defscrollback 1024

# 在最下一行显示窗口列表和时钟
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.kW}%-w%{.kY}%n %t%{-}%+w %=%{..G} %H(%l) %{..Y} %Y/%m/%d %c:%s "
vbell off # 关闭错误提示

# 按 Ctrl-Z w 或 Ctrl-Z Ctrl-W 显示窗口列表
bind w windowlist -b
bind ^w windowlist -b

 

参考:

http://blog.catlovefish.com/?p=284

http://www.ibm.com/developerworks/cn/linux/l-cn-screen/

http://os.51cto.com/art/200908/144275.htm

posted @ 2012-08-30 10:34  congbo  阅读(924)  评论(0编辑  收藏  举报