screen简单来说是一个可以在多个进程之间多路复用一个物理终端的窗口管理器或者代理。
1、简单三部曲
(1)创建会话
#screen -dmS xxx
上面命令用来建立一个处于断开模式的会话,其中,xxx为session name。
(2)列出会话
#screen -list
上面命令用来列出所有会话,这个有点恶心,毫无隐私可言。
(3)重连会话
#screen -r xxx
上面命令用来重新连接指定会话,其中,xxx为会话名称。
2、详细命令介绍
(1)创建会话
(A)直接在命令行中键入screen命令
#screen
上面命令将创建一个由screen管理的会话,除了享有screen的各种优势外,与直接SecureCRT没什么区别,你可以任意执行shell或者你的程序,在该窗口中输入exit回车则退出窗口,如果该screen会话只有唯一窗口,则会话直接退出,否则screen会自动切换到前一个窗口。
(B)screen命令后跟要执行的程序
#screen vi test.c
screen创建一个执行vi test.c的单窗口会话,退出vi将退出该窗口,如果会话有且仅有这个窗口,则会自动退出会话。
(C)在会话中创建多个窗口
在screen会话中可以创建多个窗口,在当前screen窗口中键入ctrl+a c即可,screen会在该会话中生成一个新的窗口并切换到该窗口。
(2)断开与重连
screen可以不中断窗口中正在运行的程序而仅仅暂时断开(detach)screen会话,并且可以在任意时间里重新连接(attach)该会话,此时可以原封不动地回到断开会话时的状态。在screen窗口中键入ctrl+a d,此时,screen会提示detached,一段时间后,screen -ls找回会话,重新连接screen -r xxx就能满血复活了。
需要注意的是:screen中任何命令都是由ctrl+a和另外一个字母组合出来的,前缀ctrl+a是必须的。
screen会话有几个状态,分别是attache(连接)、detache(断开)、dead(会话被人为kill掉)、remove(使用screen -wipe清除会话后的状态)。
screen重连会话除了可以用会话pid外,还可以用会话名称重连,后一种方式更直观和有意义。
(3)管理会话
(1)窗口命名
#ctrl+a A xxx
(2)列出窗口
#ctrl+a w
(3)保存窗口
#ctrl+a d
(4)退出窗口
#ctrl+a k
(5)屏幕切分
#ctrl+a S //水平切分
#ctrl+a | //垂直切分
#ctrl+a tab //在各区块之间切换(每个区块上都可以创建窗口并运行进程)
#ctrl+a X //关闭当前焦点所在区块
#ctrl+a Q //关闭除当前区块外的所有区块
(6)会话共享
#screen -x