进入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。
复制黏贴
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来回复。
还可以额外通过定制状态栏来使得screen更方便使用。我用过,暂时就先不写了,以后用到了再补上。
参考资料
入门与介绍 https://www.ibm.com/developerworks/cn/linux/l-cn-screen/
manual http://www.gnu.org/software/screen/manual/screen.html
http://blog.catlovefish.com/?p=284